2

私はC#プログラマーであり、C++についてはあまり知りません。エラーが発生する理由はありますか?

ref class masterWeapon{
public :
    virtual property int Slot {
        int get(){
            return -1;
        }
    }
};

ref class Weapon1 : masterWeapon{

public :
    virtual property int Slot{
//following like throw an error :  cannot override base class method 
        int get() override = masterWeapon::Slot::get{
            return 1;
        }
    }

};
4

1 に答える 1

4

その部分を削除するだけ= masterWeapon::Slot::getでコンパイルされます。C3764に付随するエラーメッセージを読むと、これが少しわかりやすくなります(ただし、100%ではありません)。

...基本メソッドが明示的にオーバーライドされるため'Weapon1::Slot::get'

次のコードを提供します。

ref class Weapon1 : masterWeapon{
public :
    virtual property int Slot {
        int get() override {
            return 1;
        }
    }
};

に対して実行されたとき:

masterWeapon^ weapon1 = gcnew masterWeapon();
masterWeapon^ weapon2 = gcnew Weapon1();

Console::WriteLine(L"weapon1->Slot = {0}", weapon1->Slot);
Console::WriteLine(L"weapon2->Slot = {0}", weapon2->Slot);

結果:

武器1->スロット=-1

武器2->スロット=1

于 2013-03-08T19:37:59.730 に答える