我有一个基部结构FooBase
:C++存储模板结构
struct FooBase { };
然后,我创建的模板结构Foo
其为FooBase
子:
template <typename typeName> struct Foo : public FooBase { typeName* foo };
在一些I类创建的矢量FooBase
并在其中添加Foo
的实例:
vector <FooBase> FooVector
...
Foo <Bar> fooInstance;
fooInstance.foo = new Bar();
FooVector.push_back (fooInstance);
然后我需要访问存储的数据,但我发现了可预见的和明显的错误有关的缺席成员foo
在FooBase
FooVector[0].foo
我不能写类似
Foo <Bar> fooInstance = FooVector[0]
因为我不知道模板参数。
如何将Foo
的实例存储在向量中,以便稍后可以访问它们。 请注意,在最后一步 - 从矢量读取数据时,我不知道模板参数。
P.S.不允许增强!
你可以用'typename'来引用'Bar'吗?你需要用'Bar'来做任何特定于它的类型(我的猜测是否定的)。 – MartyE
你正在寻找的是一种称为类型擦除的技术。 – Ylisar