为什么我的函数名称中会随机出现一个额外的字母?
Why does a random extra letter appearing in my functions name?
我正在尝试将抽象 class 实现为接口定义,但在从中派生 class 时出现奇怪的错误,说我的函数没有覆盖抽象定义.
现在错误消息中出现了奇怪的事情:
'json_object* NetworkCommunication::SendMessageA(const char*, const char*, json_object*)' marked 'override', but does not override
注意到最后多出来的 'A' 了吗?在我的实际代码中没有出现的那个?如果我将它添加到每个定义的代码中,编译工作正常,我可以继续处理下一个错误。
如果我将其复制粘贴到 cppshell,则不会造成任何问题。这是什么原因造成的?
class NetworkCommunicationInterface
{
public:
virtual json_object* SendMessage(const char* msg, const char* request, json_object* json_post) = 0;
virtual void SetBaseUrl(const std::string& url) = 0;
virtual ~NetworkCommunicationInterface(){}
};
class NetworkCommunication : public NetworkCommunicationInterface
{
public:
void SetBaseUrl(const std::string& url) override;
json_object* SendMessage(const char* msg, const char* request, json_object* json_post) override;
const char* GetBaseUrl();
NetworkCommunication();
virtual ~NetworkCommunication(){}
//Implementation
NetworkCommunication::NetworkCommunication()
{
base_url = "";
}
json_object* NetworkCommunication::SendMessage(const char* msg, const char* request, json_object* json_post)
{
...
}
SendMessage
是一个宏,根据是否定义了 UNICODE
定义为 SendMessageA
或 SendMessageW
。这在 Windows 头文件中;所以你不能用那个名字定义你自己的函数——除非你先取消定义SendMessage
,这可能不是一个好主意。
我正在尝试将抽象 class 实现为接口定义,但在从中派生 class 时出现奇怪的错误,说我的函数没有覆盖抽象定义.
现在错误消息中出现了奇怪的事情:
'json_object* NetworkCommunication::SendMessageA(const char*, const char*, json_object*)' marked 'override', but does not override
注意到最后多出来的 'A' 了吗?在我的实际代码中没有出现的那个?如果我将它添加到每个定义的代码中,编译工作正常,我可以继续处理下一个错误。
如果我将其复制粘贴到 cppshell,则不会造成任何问题。这是什么原因造成的?
class NetworkCommunicationInterface
{
public:
virtual json_object* SendMessage(const char* msg, const char* request, json_object* json_post) = 0;
virtual void SetBaseUrl(const std::string& url) = 0;
virtual ~NetworkCommunicationInterface(){}
};
class NetworkCommunication : public NetworkCommunicationInterface
{
public:
void SetBaseUrl(const std::string& url) override;
json_object* SendMessage(const char* msg, const char* request, json_object* json_post) override;
const char* GetBaseUrl();
NetworkCommunication();
virtual ~NetworkCommunication(){}
//Implementation
NetworkCommunication::NetworkCommunication()
{
base_url = "";
}
json_object* NetworkCommunication::SendMessage(const char* msg, const char* request, json_object* json_post)
{
...
}
SendMessage
是一个宏,根据是否定义了 UNICODE
定义为 SendMessageA
或 SendMessageW
。这在 Windows 头文件中;所以你不能用那个名字定义你自己的函数——除非你先取消定义SendMessage
,这可能不是一个好主意。