【问题标题】:C++ collection of abstract base classes抽象基类的 C++ 集合
【发布时间】:2009-11-21 22:27:09
【问题描述】:

如何在不使用指针的情况下,使用基类作为集合值来创建实现抽象基类的类的 STL 集合?

Boost 中有什么东西可以让我实现它吗?该集合具体是地图。

谢谢

【问题讨论】:

    标签: c++ inheritance virtual


    【解决方案1】:

    你不能完全避免指针。如果要避免Object slicing,则必须在集合中存储指针。 Boost 有一个可以很好地隐藏指针的容器:ptr_map

    【讨论】:

      【解决方案2】:

      Boost Pointer Container Library 做你想做的事。

      【讨论】:

        【解决方案3】:

        你不能

        想想编译器将如何生成代码来做到这一点? 没有指针意味着必须在静态数组或其他东西中“在集合本身中”分配存储。但是子类所需的存储空间可以改变!那么编译器会怎么做呢? ...它不能...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-02-06
          • 1970-01-01
          • 2010-12-12
          • 2011-06-12
          • 2018-07-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多