c++ - std::array 中的模板类

标签 c++ c++11 stdarray

是否可以在不指定类型名的情况下在 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/

相关文章:

c++ - 在 Visual Studio 2012 中从一个项目引用另一个项目中的 DLL

c++ - 提取文件重复信息

c++ - 如何从重载解析中删除函数?

c++ - 外部模板和不完整类型

c++11 - 在C++中,如何使用for_each反向迭代数组?

c++ - 进行异步调用后删除 asio 套接字

c++ - 如何隐藏 C++ 中的类?

c++ - 需要帮助解码这个 typedef

c++ - 如何声明 2d std::array

c++ - 如何使用模板根据类中的参数设置数组大小