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