簡體   English   中英

在沒有多個定義的頭文件中包含cpp文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM