【发布时间】:2011-02-10 06:25:50
【问题描述】:
template <class T>
class baseclass{
protected:
T data;
public:
baseclass(){};
void setData(T d);
};
template<class T>
void baseclass<T>::setT(T d){
data = d;
}
上面显示的是我的基类,一个受保护的成员变量,一个 setter。
template <class T>
class aclass : public baseclass<T>
{
public:
aclass(T d);
};
template<class T>
aclass<T>::aclass(T d){
setData(d); <---WORKS
data = d; <---DOESN'T WORK
}
现在这是我的第一个子类。出于某种原因,直接访问受保护的成员变量是行不通的,尽管我认为它应该这样做。但是,访问设置器工作正常。我是 C++ 的菜鸟,我确定我遗漏了一些明显的东西。
【问题讨论】:
-
这样写行不行->data = d;?
-
您能否更具体地说明“不起作用”是什么意思?您是否收到编译器错误(如果是,是哪一个),或者它在运行时什么也不做?
-
@Michael 是的,确实如此。自然。
标签: c++ templates inheritance