2

我有一个 C++/CX Windows Store 组件类,我想实现一个可以从 C# 调用的自定义公共 ToString 方法。它编译得很好,但是我从编译器那里得到了一个奇怪的警告。这是重现警告的代码:

public ref class Foo sealed
{
public:
    String^ ToString()
    {
        return ref new String(L"This is from class Foo");
    }
};

当我编译上述类时,Visual Studio 2013 显示此警告:

警告 C4827:具有 0 个参数的公共“ToString”方法应标记为虚拟并覆盖 (Foo.cpp)

但是,当我在方法签名上添加“虚拟覆盖”时,编译器中会出现语法错误。如何从 C++/CX 类中覆盖 Object.ToString()?

4

1 回答 1

3

virtual开头去,override结尾去。此外,您可以摆脱ref new String,编译器可以确定您希望将字符串常量视为String^.

public ref class Foo sealed
{
public:
    virtual String^ ToString() override
    {
        return "This is from class Foo";
    }
};
于 2014-04-20T13:35:08.430 回答