是否可以在不指定类型名的情况下在 std::array 中添加模板类?我是说。
template<typename T>
class MyClass
{
...
}
std::array<MyClass *> arr;
原因是我有一种存储接受所有派生自 MyClass
的类,但是模板类的问题是我需要指定类型名,那么类需要像那样:
class Storage
{
...
private:
std::array<MyClass<TYPE GOES HERE> *> arr;
}
我想要或多或少像这样的东西:
class Storage
{
...
private:
std::array<MyClass *> arr;
}
这样我就可以添加派生自 MyClass 的任何类。
有没有办法做到这一点?
最佳答案
一个选择是创建一个基类,MyClass
派生自该基类,并让数组存储指向基类的指针。
struct MyBase
{
virtual ~Base() {}
};
template<typename T>
class MyClass : public MyBase
{
...
}
std::array<MyBase*> arr;
关于c++ - std::array 中的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878674/