[英]Including a cpp file in a header file without multiple definition
我必須使用C ++ OpenVPN3庫來開發具有OpenVPN功能的Qt應用程序。 問題是我需要創建一個從QObject和這個庫提供的抽象類派生的類。
class Client : public QObject, public ClientAPI::OpenVPNClient {
Q_OBJECT
{
. . .
}
我需要使用的所有類型都保存在一個名為ovpncli.cpp
大型源文件(cpp)中。 當我現在在頭文件中包含源文件時,這會成為問題,因為當編譯器生成轉換單元時,它會導致多重定義錯誤。 從Qobject繼承的類也必須有一個單獨的定義和實現,除非你加上“包括myclass.moc”到最后(但看到這並沒有為我工作在這里 )。 除了“僅將OpenVPN頭文件放在我的類的實現文件中”之外,庫開發人員沒有說太多,但這是不可能的,因為類定義繼承自僅在`ovpnfile中定義的類。
有沒有辦法在頭文件中包含cpp文件,同時防止多重定義錯誤?
該類的定義在ovpncli.hpp
而不是ovpncli.cpp
。 ( 是的,真的 )所以只需按照預期的方式使用標題系統。
#include "ovpncli.hpp"
並與ovpncli.cpp
鏈接,但不要#include
它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.