Почему в названии моей функции появляется случайная дополнительная буква? - PullRequest
3 голосов
/ 29 октября 2019

Я пытаюсь реализовать абстрактный класс в качестве определения интерфейса, и я получаю странную ошибку при выводе класса из него, говоря, что моя функция не переопределяет абстрактное определение.

Теперь странныйвещь появляется в сообщении об ошибке:

'json_object* NetworkCommunication::SendMessageA(const char*, const char*, json_object*)' marked 'override', but does not override

Обратите внимание на дополнительный «А» в конце? Тот, который не появляется нигде в моем реальном коде? Если я добавляю его в код при каждом определении, компиляция работает нормально, и я могу перейти к следующей ошибке.

Если я скопирую и вставлю это в 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)
    {
    ...
    }

1 Ответ

6 голосов
/ 29 октября 2019

SendMessage - это макрос, который определяется как SendMessageA или SendMessageW в зависимости от того, определено UNICODE. Это в заголовочных файлах Windows;поэтому вы не можете определить свою собственную функцию с этим именем - если только вы не отмените сначала SendMessage, что, вероятно, не очень хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...