添加常規資料型別時,很簡單:
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);
uj5u.com熱心網友回復:
std::queue<ReqMsg*> reqQueue;ReqMsg* a=new ReqMsg();
reqQueue.push(a);
reqQueue洗掉了元素時,記得delete ;
uj5u.com熱心網友回復:
std::queue<ReqMsg> reqQueue;reqQueue.push(ReqMsg());
uj5u.com熱心網友回復:
你這個不行uj5u.com熱心網友回復:
你的類沒有默認建構式.
uj5u.com熱心網友回復:
你的類的建構式引數既然要參考,最好傳遞const string&#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;
}
uj5u.com熱心網友回復:
你e]
有個疑問想問你
為什么我的建構式是下面這個的時候:
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));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/25944.html
標籤:C++ 語言
上一篇:小白c#求幫忙
下一篇:MacOS 10.15.6 QT QApplication::QApplication(int&, char**, int) 報錯
