模板编程中的数据成员访问

时间:2017-04-29 01:23:58

标签: c++ c++11 template-meta-programming

我正在创建一个模板类,它具有两种不同大小的特殊行为,以及一般类中的一般行为,如下所示:

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的编译错误无法解决。这里有什么问题 ?!!感谢

1 个答案:

答案 0 :(得分:7)

类模板特化是它自己的类,与主模板无关。所以Dataset<T, 1>没有_data成员,因为你没有在其类定义中声明一个成员。

如果您需要同一模板的不同专业化之间的共同特征,您可以将它们移动到共享基类。