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 回答