2011-01-23 37 views
0

我有一個Room類,它具有這樣的構造:矢量錯誤消息以及如何將對象插入到C++中的矢量中?

Room::Room(string a, int b, int c, string d) 

而在我的主要功能我做的:

vector<Room> room; 
sale.push_back("aaa", 1, 2, "ccc"); 

它給我這個錯誤:

error: no matching function for call to ‘std::vector<Room, std::allocator<Room> >::push_back(const char [4])’ 

note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = Room, _Alloc = std::allocator<Room>] 

我不不明白這個錯誤。我如何添加一個新的房間對象到矢量中?

+0

新增C++標籤的相關性。 – Maxpm 2011-01-23 17:34:23

+0

刪除了cpp標籤;這個問題不是關於預處理器。 – 2011-01-23 17:44:39

+0

對不起,我不知道cpp和C++有什麼區別。我將來會更加小心 – 2011-01-23 18:02:52

回答

4

大概是這樣的:

std::vector<Room> rooms; 
room.push_back(Room("aaa", 1, 2, "ccc")); 
2

您不能像使用push_back函數那樣使用函數,只是因爲push_back函數沒有替換構造函數。這裏是解決方案:

vector<Room> rooms; 
Room ins("aaa",1,2,"ccc"); 
rooms.push_back(ins);