1
我有一個使用rapidjson JSON解析器的C++類Tester.cpp。C++上下文錯誤
下面是代碼的縮寫版本:
using namespace std;
using namespace rapidjson;
int main(int argc, char** argv)
{
...
//Parse the JSON
rapidjson::Document document;
document.Parse(buffer);
add_rules_to_tester(document);
...
}
void add_rules_to_tester(rapidjson::Document document)
{...}
我的頭文件Tester.h看起來像下面的(再次略):
using namespace std;
using namespace rapidjson;
void add_rules_to_tester(rapidjson::Document document);
當我註釋掉線add_rules_to_tester主要的方法,我沒有得到任何錯誤。當我取消註釋該行時,出現下面的編譯時錯誤。
In file included from Tester.h:38:0,
from Tester.cpp:28:
rapidjson/document.h: In function ‘int main(int, char**)’:
rapidjson/document.h:2076:5: error:‘rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::GenericDocument(const rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>&) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator]’ is private
GenericDocument(const GenericDocument&);
^
Tester.cpp:163:34: error: within this context
add_rules_to_tester(document);
^
In file included from Tester.cpp:28:0:
Tester.h:76:6: error: initializing argument 1 of ‘void add_rules_to_tester(rapidjson::Document)’
void add_rules_to_tester(rapidjson::Document document);
有什麼建議,問題可能是什麼?在我看來,我誤解了命名空間的使用,但是讓我知道是否有任何其他信息可以提供。謝謝!
謝謝,我試圖通過引用傳遞,但我得到了以下錯誤:Tester.cpp:163:35:錯誤:類型的非const引用無效初始化「rapidjson ::類型'rapidjson :: Document * {又名rapidjson :: GenericDocument> *}的右值的文檔和{aka rapidjson :: GenericDocument >&}'' add_rules_to_tester (&文件); –
user3772960
將const添加到聲明中並沒有幫助。 void add_rules_to_tester(const rapidjson :: Document&document) – user3772960
void add_rules_to_tester(const rapidjson :: Document&document)確定。請像這樣調用它:add_rules_to_tester(document); – CreativeMind