【发布时间】:2016-04-06 20:03:24
【问题描述】:
我收到一个带有 std::function 回调的编译错误。这是类声明:
class Cloud
{
// ...
public:
Cloud (std::string end_point) : end_point(end_point) {}
void operator() (std::function<void(rapidjson::Document)> callback);
};
我将回调存储在一个私有变量中,然后在我尝试调用回调的类的函数中,如下所示:
rapidjson::Document document;
this->callback(document);
这段代码给了我错误:
/Users/petilodie/Projects/TheGame/client/Classes/Cloud.cpp:67:20: Calling a private constructor of class 'rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>'
我是 C++ 新手,我确定我在这里做错了什么。任何帮助表示赞赏。
【问题讨论】:
-
rapidjson::Document不可复制。您需要通过引用将其传递给回调。