我已经创建了一个Windows运行时组件(名称空间:动物),我希望覆盖Platform :: String :: ToString方法。
Dog.h
#pragma once
namespace Animal
{
public ref struct Dog sealed
{
private:
String^ _name; // Yes, it's private
public:
Dog();
//String^ ToString();
virtual String^ ToString() override { } // I've found this in internet
};
}
Dog.cpp
#include "pch.h"
#include "Dog.h"
using namespace Animal;
using namespace Platform;
String^ _name;
Dog::Dog()
{
}
String^ Dog::ToString()
{
return _name;
}
所有编译错误都在Dog.h的“virtual String ^ ToString()override {}”中:
· Error C2433 'Animal::Dog::String': 'virtual' not permitted on data declarations
· Error C4430 missing type specifier - int assumed. Note: C++ does not support · default-int
· Error C2143 syntax error: missing ';' before '^'
· Error C2334 unexpected token(s) preceding '{', skipping apparent function body
答案 0 :(得分:0)
在派生类中执行此操作:
virtual String^ ToString() override
{
return _name;
}
编辑:
在头文件中{ }
声明的末尾是否还有ToString()
个大括号?如果是这样,那么您已经定义了方法体。因此编译器会抱怨.cpp文件中的重新定义。
答案 1 :(得分:0)
<强>解决:强>