Windows runtime C4827警告覆盖C++/CX地铁级
我有一个C++/CX Windows应用商店组件类,我想实现一个自定义的公共ToString方法,我可以从C#调用它。它编译得很好,但我从编译器那里得到一个奇怪的警告。以下是再现警告的代码: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
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";
}
};
啊,我的错,我来修理标签。