【发布时间】:2009-11-21 22:27:09
【问题描述】:
如何在不使用指针的情况下,使用基类作为集合值来创建实现抽象基类的类的 STL 集合?
Boost 中有什么东西可以让我实现它吗?该集合具体是地图。
谢谢
【问题讨论】:
标签: c++ inheritance virtual
如何在不使用指针的情况下,使用基类作为集合值来创建实现抽象基类的类的 STL 集合?
Boost 中有什么东西可以让我实现它吗?该集合具体是地图。
谢谢
【问题讨论】:
标签: c++ inheritance virtual
你不能完全避免指针。如果要避免Object slicing,则必须在集合中存储指针。 Boost 有一个可以很好地隐藏指针的容器:ptr_map
【讨论】:
Boost Pointer Container Library 做你想做的事。
【讨论】:
你不能
想想编译器将如何生成代码来做到这一点? 没有指针意味着必须在静态数组或其他东西中“在集合本身中”分配存储。但是子类所需的存储空间可以改变!那么编译器会怎么做呢? ...它不能...
【讨论】: