2015-04-06 54 views
-1

我已經創建了該類的一個實例,但是我無法將該船的名稱push_back到該向量。無法push_back向量

if (rows->_rows.size() != rows->rows_Size) 
{ 
    rows->_rows.push_back (ship->name); } 

我收到以下錯誤。

錯誤1錯誤C2664: '無效的std ::矢量< _Ty> ::的push_back(泊位& &)':不能從 '的std :: string' 轉換參數1至 '泊位& &'

6智能感知:沒有重載函數的實例「std :: vector < _Ty,_Alloc> :: push_back [with _Ty = Berths,_Alloc = std :: allocator]」與參數列表 參數類型爲:(std :: string) 對象類型是:std :: vector>

我試圖添加的類的代碼該數據是:

#pragma once 

class Berths; 

#include "Berths.h" 
#include "Ship.h" 
#include <iostream> 
#include <vector> 

class Rows { public: Rows(void);  ~Rows(void); 

std::vector<Berths> _rows; int rows_Size; 

bool dock(Ship ship); 

bool undock(Ship ship); 

}; 
Rows::Rows(void) 
{ 
    rows_Size = 10; 
} 

任何想法是什麼原因造成的?

由於

+2

'rows - > _ rows.size'應該是'rows - > _ rows.size()'。你忘了實際調用該函數。 – 2015-04-06 01:02:07

+0

哦,哇,這是一個漫長的一天><我仍然可以留下這個 錯誤錯誤C2664:'void std :: vector <_Ty> :: push_back(Berths &&)':無法將參數1從'std: :string'to'泊位&&' – PapaSmurf 2015-04-06 01:04:01

+2

嗯,這很明顯,不是嗎?你有一個X的向量,並且你試圖推動Y進入它,Y與X不同,顯然不能轉換爲X. – 2015-04-06 01:05:33

回答

2

.size()是矢量的成員函數。因此,您應該使用rows->_rows.size()。這是我們都犯的一個常見錯誤。