Предупреждение C4827, переопределяющее ToString в классе C++/CX Metro
У меня есть класс компонента C++/CX Windows Store, и я хотел бы реализовать собственный общедоступный метод ToString, который я могу вызывать из C#. Компилируется нормально, но я получаю странное предупреждение от компилятора. Вот код, который воспроизводит предупреждение:
public ref class Foo sealed
{
public:
String^ ToString()
{
return ref new String(L"This is from class Foo");
}
};
Когда я компилирую вышеупомянутый класс, Visual Studio 2013 показывает это предупреждение:
предупреждение C4827: открытый метод ToString с 0 параметрами должен быть помечен как виртуальный и переопределить (Foo.cpp)
Однако, когда я добавляю "виртуальное переопределение" в сигнатуру метода, я получаю синтаксические ошибки в компиляторе. Как я могу переопределить Object.ToString() из класса C++ / CX?
1 ответ
virtual
идет в начале, override
идет в конце. Кроме того, вы можете избавиться от ref new String
компилятор может выяснить, что вы хотите, чтобы строковая константа рассматривалась как String^
,
public ref class Foo sealed
{
public:
virtual String^ ToString() override
{
return "This is from class Foo";
}
};