對不起,但這真是令我困惑,我知道答案是盯着我的臉,我無法弄清楚。有人可以看看嗎?它的航空預訂系統學校項目。C++從類的向量的指針訪問類的成員
此功能包含航班號,容量, 航班數的計數以及包含所有航班的航班作爲參數。 它將檢查以確保航班不存在,如果它存在錯誤 消息將被顯示,如果不是將創建航班。 航班數量的計數也會增加。
void newFlight(string f, string s, int* n, vector<Flight> *v)
{
Flight temp;
//Check to see if flight number exists
bool alreadyExist = false;
for (int i=0; i < v->size(); i++)
{
if (f.compare((v[i].getNumber()) == 0))
alreadyExist = true;
}
//If it doesn't exist, create it
if (!alreadyExist)
{
v->push_back (temp); //Add the new Flight object to the
//vector of flights
*n++; //Increase count
}
else
{
cout << "A flight numbered " << f << " already exists";
cout << ". Flight not created.\n";
}
};
我的問題是,當我試圖比較航班號,已經在載體中的航班與我想要添加的航班。在第7行我不斷收到此消息:
error:
‘class std::vector<Flight, std::allocator<Flight> >’
has no member named ‘getNumber’
在考慮中的載體是與具有名爲getNumber()成員Flight類的載體。我通過引用將向量傳遞給函數。所以v是一個指針,但我認爲[]會照顧到這一點。我也嘗試使用 - >運算符而不是點運算符,但它沒有幫助。我在虧本,任何幫助,將不勝感激。我相對生疏,夏天剛剛完成:D我也希望這是格式正確。
非常感謝!我很欣賞所有的快速答案。還有一件事,當我用這種方式內聯比較函數時,編譯器給了我這個錯誤: 錯誤:在'Flight :: getNumber()()== 0'中沒有匹配'operator ==' 因此,無論如何要寫入所有內聯而不會重載==運算符?這只是出於好奇,我只是最終將代碼的輸出保存到臨時字符串變量,然後在比較函數中使用它。再次感謝! – Ben 2010-09-03 18:59:31
getNumber返回的類型是什麼?如果這不是本地類型(如int),則必須定義運算符==來告訴編譯器如何比較兩個非本機類型。如果你在頭文件中實現了operator ==,編譯器可能會爲你內聯(如果operator ==的實現不是太大)。 – Patrick 2010-09-03 22:12:24