CURL * myHandle;
(... some operations)
std::vector<curl_a> * crl = &program_data::getInstance().curl_acc[80];
crl->push_back({ myHandle,true }); //look at bottom
push_back的结构似乎是:
struct curl_a {
curl_a(){};
curl_a(CURL * d, int &l) :data(d), logged(l){};
CURL * data;
bool logged;
};
// header.h(单例模式)
std::unordered_map <int, std::vector<curl_a>> curl_acc;
现在告诉我,为什么push_back不起作用? 来自structs.h的Compilator返回错误(上面有结构)
curl_a' : illegal member initialization: 'data' is not a base or member
答案 0 :(得分:0)
问题似乎是您使用无效的第二个参数调用curl_a
构造函数。当参数明确需要l值(参考)时,您正在传递true
。
使用整数变量,而不是使用值true
进行初始化。
int x = 1;
crl->push_back({ myHandle, x });
以下是您的示例,但使用int*
代替CURL*
进行了简化:http://ideone.com/SzxESi
以下是使用true
作为参数失败的尝试示例:http://ideone.com/HQtAaU