64,654
社区成员
发帖
与我相关
我的任务
分享
std::queue<int> reqQueue;
reqQueue.push(1);
class ReqMsg
{
public:
ReqMsg(string &m,string &p,int ver,int id)
{
method = m;
params = p;
_ver = ver;
_id = id;
}
~ReqMsg();
string method; //方法名
string params; //参数
int _ver; //版本
int _id; //id
}
std::queue<ReqMsg> reqQueue;
reqQueue.push(new ReqMsg);
ReqMsg(string &m, string &p, int ver, int id)
{
method = m;
params = p;
_ver = ver;
_id = id;
}
这样用
MsgQueue.push(ReqMsg("name1", "param1", 2, 1));
为何报错:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2440 “<function-style-cast>”: 无法从“initializer list”转换为“ReqMsg” easyTest e:\svndir\15--c++学习\c++ exercise\easytest\easytest\easytest.cpp 185
改成这样也不行:
MsgQueue.push(ReqMsg(string("name1"), string("param1"), 2, 1));
把构造函数改成:
ReqMsg(const string& m, const string& p, int ver, int id)
{
method = m;
params = p;
_ver = ver;
_id = id;
}
然后这样用才可以:
MsgQueue.push(ReqMsg("name1", "param1", 2, 1));#include <iostream>
#include <queue>
#include <string>
using namespace std;
class ReqMsg
{
public:
ReqMsg(const string& m, const string& p, int ver, int id)
{
method = m;
params = p;
_ver = ver;
_id = id;
}
~ReqMsg() {};
string method; //方法名
string params; //参数
int _ver; //版本
int _id; //id
};
int main() {
queue<ReqMsg> q;
q.push(ReqMsg(string("abc"), string("edf"), 1,4));
return 1;
}