派生类看不到基类成员



我在这段代码中做错了什么?

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;
}

最新更新