#include <iostream>
class ZZ
{
public:
void print()
{
std::cout << "hello\n";
}
};
class YY : public ZZ
{
public:
void print()
{
using ZZ::print;
print();
}
};
int main()
{
YY temp;
temp.print();
getchar();
return 0;
}
为什么上面的这段代码回报错?error: 'ZZ' is not a namespace or unscoped enum using ZZ::print;
因为你那个用法是错的,这个用法是
c++11
新增的你写在成员函数里面,那么便成为了扩展一个成员函数的作用域,这当然不会成功。。
首先 main里的temp没初始化实例。。 然后你子类YY重载了父类的方法。别写USING,直接 ZZ::print();
在派生类中使用基类的public函数,要么你就直接不重写,要么你可以在派生类里的print函数中使用ZZ::print()调用。
using写错地方了!不应该写在成员函数内部!另外,两个print函数同名,会出现无限递归,应该给YY中的print重新起个名字!
class YY : public ZZ
{
public:
};