请注意以下程序。
class Base{
protected:
int datum;
};
class D: public Base{
public:
int Get_Datum(){
return datum;
}
};
int main(){}
基类包含成员变量。我们已明确声明成员变量是一个整数。派生类可以从基类继承并访问该成员变量。这可以按预期编译和工作。
现在让我们尝试相同的事情,但是在编译时推断出数据成员。
template <typename Datum>
class Base{
protected:
Datum datum;
};
template <typename Datum>
class D: public Base<Datum>{
public:
int Get_Datum(){
return datum;
}
};
int main(){}
15:10:错误:'范围'未在此范围内声明
如何编辑它以使其工作方式与第一个示例相同?我是否必须对构造函数做些什么?
答案 0 :(得分:2)
将Get_Datum
更改为:
int Get_Datum()
{
return this->datum;
}
要获得解释,请在此处阅读答案 - &gt; https://stackoverflow.com/a/10639312/986
答案 1 :(得分:0)
谢谢。提供可能的重复链接,回答我的问题 诀窍是添加“this-&gt;”,将数据转换为依赖名称。
<强>解决方案:强>
template <typename Datum>
class Base{
protected:
Datum datum;
};
template <typename Datum>
class D: public Base<Datum>{
public:
int Get_Datum(){
return this->datum; //<- "this->" added
}
};
int main(){}