我需要在C++中存储对派生类实例的引用。我考虑使用shared_ptrs向量到基类(因为它需要持有不同类型的派生类),但是,重要的是容器包含原始指针,而vector(或其他stl容器)则不是这种情况,如果我没错的话。有没有一种方法可以在本地C++中执行此操作,还是必须使用像Boost的ptr_vector这样的特殊容器?C++:原始指针的容器
编辑:这是我的测试代码:
class Foo
{
public:
Foo() {}
virtual ~Foo() {}
virtual void set_x(int i) = 0;
};
class Bar : public Foo
{
public:
Bar() {}
void set_x(int i)
{
this->x = i;
}
int x;
};
int main()
{
Bar bar;
// ptr
std::cout << &bar << "\n";
std::vector<Foo*> foos;
foos.push_back(&bar);
// different ptr value
std::cout << &foos[0] << "\n";
foos[0]->set_x(1);
// however, changes are made
std::cout << bar.x;
return 0;
}
由于提前,
耶拿
会向量(指向您的对象的指针矢量)不适合你吗? –
JoshD
2010-09-27 03:10:43
我不清楚为什么一个'shared_ptr'容器不适合你。 – 2010-09-27 03:13:25
我尝试过,但是当我通过vector.push_back(&instance)添加实例的指针时,向量中的指针与原始指针不同。 – jena 2010-09-27 03:14:13