Я должен использовать библиотеку C ++ OpenVPN3 для разработки приложения Qt с возможностями OpenVPN.Проблема заключается в том, что мне нужно создать класс, производный как от QObject, так и от абстрактного класса, предоставляемого этой библиотекой.
class Client : public QObject, public ClientAPI::OpenVPNClient {
Q_OBJECT
{
. . .
}
Все типы, которые мне нужно использовать, хранятся в одном большом источнике (cpp)файл называется ovpncli.cpp
.Это становится проблематичным, когда я теперь включаю исходный файл в заголовочный файл, потому что это вызывает ошибку множественного определения, когда единицы перевода генерируются компилятором.Классы, которые наследуются от QObject, также должны иметь отдельное определение и реализацию, если вы не добавите «include myclass.moc» до конца (но это не сработало для меня, как видно здесь ).Разработчики библиотеки не сказали ничего, кроме «помещения заголовочных файлов OpenVPN только в файл реализации моего класса», но это невозможно, поскольку определение класса наследуется от класса, определенного только в файле «ovpnfile».
Isесть ли способ включить файл cpp в заголовочный файл, одновременно предотвращая ошибку множественного определения?