如何将指向CURL的结构传递给vector?

时间:2014-08-19 02:55:59

标签: c++ c++11

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

1 个答案:

答案 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