#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;
巴扎黑2017-04-17 14:59:58
あなたの使い方が間違っているため、この使い方はc++11
新たに追加されました
これをメンバー関数内に記述すると、メンバー関数のスコープが拡張されますが、当然成功しません。 。
伊谢尔伦2017-04-17 14:59:58
まず、main の temp はインスタンスを初期化しません。 。 次に、サブクラス YY が親クラスのメソッドをオーバーロードします。 USING とは書かず、ZZ::print();
だけを記述してください。迷茫2017-04-17 14:59:58
派生クラスで基本クラスのパブリック関数を使用するには、それを直接オーバーライドしないか、派生クラスの print 関数で ZZ::print() 呼び出しを使用します。
怪我咯2017-04-17 14:59:58
使用が間違った場所に書かれています!メンバー関数内に記述するべきではありません。さらに、2 つの print 関数の名前が同じ場合、無限再帰が発生します。YY の print は名前を変更する必要があります。
クラス YY : パブリック ZZ
{
パブリック:
};