Я просмотрел много похожих вопросов, но не могу найти ответ, подходящий для моей проблемы. Я пытаюсь создать абстрактный класс и расширить его в другом файле .cpp
. Если я пытаюсь скомпилировать, я получаю эту ошибку.
In file included from src/main.cpp:6:0:
src/MQBIOTExecutor.cpp:4:7: error: redefinition of 'class MQBIOTExecutor'
class MQBIOTExecutor
^
In file included from src/MQBIOT.cpp:3:0,
from src/main.cpp:5:
src/MQBIOTExecutor.cpp:4:7: error: previous definition of 'class MQBIOTExecutor'
class MQBIOTExecutor
^
In file included from src/MyExecutor.cpp:3:0,
from src/main.cpp:7:
src/MQBIOTExecutor.cpp:4:7: error: redefinition of 'class MQBIOTExecutor'
class MQBIOTExecutor
^
In file included from src/MQBIOT.cpp:3:0,
from src/main.cpp:5:
src/MQBIOTExecutor.cpp:4:7: error: previous definition of 'class MQBIOTExecutor'
class MQBIOTExecutor
^
Я уже пробовал много вещей, таких как помещение абстрактного класса в заголовочный файл или создание всех функций чисто виртуальными, а не чисто виртуальными и т. Д.
Мой MQBIOTExecutor.cpp
#include <Arduino.h>
#include <ArduinoJson.h>
class MQBIOTExecutor
{
public:
virtual void getState() = 0;
virtual void getCommands() = 0;
virtual void executeCommand(JsonDocument jdoc) = 0;
virtual void getConfig() = 0;
virtual void setConfig(JsonDocument jdoc) = 0;
virtual void getSensor() = 0;
virtual void extend(String topic, String payload, JsonDocument payloadJsonDoc) = 0;
};
Мой MyExecutor.cpp
#include <Arduino.h>
#include <ArduinoJson.h>
#include <MQBIOTExecutor.cpp>
class MyExecutor : public MQBIOTExecutor
{
public:
virtual void getState()
{
}
virtual void getCommands()
{
}
virtual void executeCommand(JsonDocument jdoc)
{
}
virtual void getConfig()
{
}
virtual void setConfig(JsonDocument jdoc)
{
}
virtual void getSensor()
{
}
virtual void extend(String topic, String payload, JsonDocument payloadJsonDoc)
{
}
};
Остальное не имеет значения. Если я уберу наследство, все это скомпилируется.