我在这段代码中做错了什么?
template <typename T>
class CLASS1
{
public:
T member;
};
template <typename T>
class CLASS2 : public CLASS1<T>
{public:
void func()
{
member = 4;
}
};
Visual Studio 錯誤:
未找到成员标识符
G++ 错误:
在此范围内未声明"成员">
您需要指定名称member
的来源。在这种情况下,它来自继承的类模板CLASS1<T>
,所以你需要说:
void func()
{
CLASS1<T>::member = 4;
}
如果你说this->member
,那么编译器也知道在基类中查找名称。所以你可以做:
void func()
{
this->member = 4;
}