Windows runtime C4827警告覆盖C++/CX地铁级

Windows runtime C4827警告覆盖C++/CX地铁级,windows-runtime,windows-store-apps,c++-cli,interop,winrt-component,Windows Runtime,Windows Store Apps,C++ Cli,Interop,Winrt Component,我有一个C++/CX Windows应用商店组件类,我想实现一个自定义的公共ToString方法,我可以从C#调用它。它编译得很好,但我从编译器那里得到一个奇怪的警告。以下是再现警告的代码: public ref class Foo sealed { public: String^ ToString() { return ref new String(L"This is from class Foo"); } }; 编译上述类时,Visual Studi

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

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()?虚拟的
在开头,重写的
在结尾。另外,您可以去掉
ref新字符串
,编译器可以确定您希望字符串常量被视为
String^

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

啊,我的错,我来修理标签。