gpt4 book ai didi

c++ - 为什么我的函数名称中会出现随机的额外字母?

转载 作者:行者123 更新时间:2023-12-01 18:58:03 25 4
gpt4 key购买 nike

我正在尝试将抽象类实现为接口(interface)定义,但在从中派生类时出现奇怪的错误,指出我的函数不会覆盖抽象定义。

现在错误消息中出现了奇怪的事情:

'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,它被定义为 SendMessageASendMessageW。这是在 Windows 头文件中;所以你不能用这个名字定义你自己的函数 - 除非你先取消定义 SendMessage ,这可能不是一个好主意。

关于c++ - 为什么我的函数名称中会出现随机的额外字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com