我正在创建一个模板类,它具有两种不同大小的特殊行为,以及一般类中的一般行为,如下所示:
template<typename T, size_t DIM>
class Dataset
{
public:
// all the constructors are defaulted
// all the general behavior implementation
std::vector<T> _data;
};
鉴于以下课程的数据流量,我希望能够访问_data向量,对吧?!
template<typename T>
class Dataset<T, 1>
{
public:
T & operator()(const size_t & index)
{
return _data[index];
}
};
然而,我得到_data的编译错误无法解决。这里有什么问题 ?!!感谢
答案 0 :(得分:7)
类模板特化是它自己的类,与主模板无关。所以Dataset<T, 1>
没有_data
成员,因为你没有在其类定义中声明一个成员。
如果您需要同一模板的不同专业化之间的共同特征,您可以将它们移动到共享基类。