検索

ホームページ  >  に質問  >  本文

c++在派生类中使用基类函数的错误

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

高洛峰高洛峰2772日前401

全員に返信(4)返信します

  • 巴扎黑

    巴扎黑2017-04-17 14:59:58

    あなたの使い方が間違っているため、この使い方はc++11新たに追加されました

    リーリー

    これをメンバー関数内に記述すると、メンバー関数のスコープが拡張されますが、当然成功しません。 。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:59:58

    まず、main の temp はインスタンスを初期化しません。 。 次に、サブクラス YY が親クラスのメソッドをオーバーロードします。 USING とは書かず、ZZ::print();

    だけを記述してください。

    返事
    0
  • 迷茫

    迷茫2017-04-17 14:59:58

    派生クラスで基本クラスのパブリック関数を使用するには、それを直接オーバーライドしないか、派生クラスの print 関数で ZZ::print() 呼び出しを使用します。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 14:59:58

    使用が間違った場所に書かれています!メンバー関数内に記述するべきではありません。さらに、2 つの print 関数の名前が同じ場合、無限再帰が発生します。YY の print は名前を変更する必要があります。

    クラス YY : パブリック ZZ
    {
    パブリック:

    リーリー

    };

    返事
    0
  • キャンセル返事