簡體   English   中英

C ++中的編譯錯誤

[英]Compile error in C++

我已經使用QT Creator作為IDE和正常的make命令在c ++中編寫了一個名為“ myprotocol”的庫,並且已經在一個單獨的項目中對該庫進行了測試,作為測試平台,並且該庫運行良好。

稍后,我嘗試在另一個使用b2工具編譯其源代碼的項目中使用該庫。 我可以鏈接到myprotocol庫,但出現奇怪的輸出錯誤,說我在原始的“ myprotocol”庫項目中有問題,這是不正確的。

錯誤如下:

/home/HA/myprotocol/archive.hpp:371:25: error: declaration of ‘operator&’ as non-function
/home/HA/myprotocol/archive.hpp:371:23: error: expected ‘;’ at end of member declaration
/home/HA/myprotocol/archive.hpp:371:41: error: expected ‘)’ before ‘&’ token

這是包含錯誤的行:

iarchive& operator&(CDBRequest& buf);

這是CDBRequest的定義:

class CDBRequest
{
public:

CDBRequest() : _cdb_request(0)
{}

CDBRequest(uint16 value)
{
    _cdb_request = uint32(value) << 16;
}

CDBRequest& operator=(uint32 cdb_request)
{
    _cdb_request = cdb_request;
    return *this;
}

void set_value(uint16 value)
{
    _cdb_request = uint32(value) << 16;
}

operator uint32&() { return _cdb_request; }

private:
    uint32 _cdb_request;

};

這是我用來在b2中編譯項目的命令:

b2 variant=release link=static toolset=gcc include=/home/HA/myprotocol/ linkflags="-L /home/HA/myprotocol/ -lmyprotocol"

誰能告訴我可能是什么問題?

我找到了問題的根源:

在庫項目中,我有一個名為“ types.hpp”的頭文件,稍后在測試平台項目中對其進行測試時,我只有一個cpp文件。

但是最終,當我在根項目中對其進行測試時,根項目中還有一個名為“ types.hpp”的頭文件,因此,當我更改文件名時,一切進展順利。

我認為問題還在於兩個文件都使用#ifdef,因為它們也具有相同的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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