Я пытаюсь реализовать абстрактный класс в качестве определения интерфейса, и я получаю странную ошибку при выводе класса из него, говоря, что моя функция не переопределяет абстрактное определение.
Теперь странныйвещь появляется в сообщении об ошибке:
'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)
{
...
}