检索从向量的指针

时间:2012-01-17 05:29:41

标签: c++ pointers vector static-cast

我一直在研究一个使用基于图形的API的项目。我需要能够遍历图形并将指向现有节点的指针推送到列表中(在本例中为std :: vector)。

当然,一旦我完成遍历图形,我想采用这些指针并将它们分配给类的成员变量。当然,问题是试图将指针从向量复制到类变量。问题是必须将向量中的节点存储为基类的指针,然后在传递给类成员变量时将它们转换回实际类型。

粗略地说,我想做的是:

std::vector<smart_pointer<node_base> > nodes;
nodes.push_back( node ); 
//"node" is a smart pointer of a derived type from node_base

for ( ... )
{
    MyClass::member_node_ref = static_cast<node_type>( ( *vector_node_iterator ));
    //member_node_ref is a smart pointer of the derived node type
    //vector_node_iterator is an iterator of the vector<node_base> object
}

所有这一切都正常,直到我的复制构造函数终止。发生这种情况时,指针引用将被销毁。

这与我对指针向量的理解是一致的,所以我对这种行为并不感到惊讶,尽管我曾希望smart_pointer对象的向量可以解决它。最后,我无法弄清楚如何避免指针static_cast,我知道这是我的撤销。也就是说,我有多个派生类型,我正在传递,所以我无法摆脱static_cast。我有一些模糊的想法(可能涉及提升),但我想我会去找一些其他的意见,以防有些东西我不知道......

0 个答案:

没有答案