【发布时间】:2014-12-28 08:53:57
【问题描述】:
我想创建一个结构/类,它至少有一个具有泛型类型的成员变量。 T 可以是从 bitset 到 char 数组的任何内容。让我们称之为“场”。
然后,我想要一个包含多个 Field 对象实例的列表/向量/数组。
这样的数据结构在 C++ 中是否可行?
这就是我的解决方案现在的样子,因为
error C3203: 'Field' : unspecialized class template can't be used as a 模板参数“_Ty”的模板参数,应为真实类型
错误 C2955:“字段”:使用类模板需要模板 参数列表
class Main
{
public:
template<typename T> class Field {
public:
CString name;
bool state;
T actualValue;
};
vector<Field> m_Message;
};
...
Field field1 = new Field();
field1.actualValue = 1;
Field field2 = new Field();
field2.actualValue = 1.1;
vector<Field> message;
message.push_back(field1);
message.push_back(field2);
这是我第一次在堆栈溢出上发帖,因此对于任何格式错误或问题含糊不清,我深表歉意。
【问题讨论】:
-
它不是一个模板类,它是一个类模板,也就是构建类的秘诀。但是
vector需要一个完整的类型,而不是一个配方。不过,您可能想看看boost::any。 -
vector<Field<???>> m_Message;Main::Field<???> *field1 = new Main::Field<???>(); -
除了上面提到的问题,你可能想把
Main类作为模板,然后在里面使用vector<T>
标签: c++ list class templates vector