对不起,但这真是令我困惑,我知道答案是盯着我的脸,我无法弄清楚。有人可以看看吗?它的航空预订系统学校项目。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