2012-10-19 88 views
1

我对C++比较新,并且正在尝试第一次构建复杂的模板结构。模板类包含一个对它自己的实例的引用stdvector

我该如何声明,作为模板类Foo的成员,Foo *元素的std :: vector,但可以是各种类型的?

#include <vector> 

template <typename T> 
class Foo { 
    T mValue; 
    std::vector< Foo<T>* > mFooParameters; // <---- I would like this vector to contain 
              //  any sort of Foo<T>* elements, 
              //  Foo<int>*, Foo<double>*, etc. 
}; 

它是直截了当的,可能的但复杂的,或不可能的?

谢谢你的回答!

+0

我认为这是http://stackoverflow.com/questions/6274136/objects-of-different-classes-in-a-single-vector的副本,但我不明白你的问题的文字是如何相关的到它的头衔。 – jogojapan

+0

谢谢jogojapan。这可能是因为我迷失在模板里。我正在查看你的链接! – nenj

+0

那么,它是重复的吗? (如果没有,有什么区别?) – jogojapan

回答

0

如果您的载体类型都有关,使用多态,如在由@jogojapan提供的链接解释,如果类型不是在所有相关的,使用的void*矢量持有指针数据(有点凌乱虽然)

+0

我想我会用一个独特的,更一般的定义将多态性用于所有可能的'Foo '。谢谢! – nenj

+0

是的,多态性好得多!别客气! – higuaro

相关问题