alertDialogBuilder.setNegativeButton((DialogInterface) d -> d.cancel());
显示所有车辆列表时显示错误。如何解决?
我如何检索class vehicle{
private:
vector<string>carList;
public:
void info();
void displayCarInfo(vector<string>&carList);
}
void vehicle::info(){
char a;
string choice;
do{
cout<<"Please enter your car Reg number: ";
cin >> carPlate;
carList.push_back(carPlate);
cout << "Do you want to continue add car info(y/n)?";
cin >> choice;
}while(choice == "y");
}
void vehicle::displayCarInfo(vector<string>&carList){
for(int i = 0; i < 100; i++){
cout << carList[i];
}
}
//----------------------------------------------------------------
int main(){
vehicle a;
a.displayCarInfo(carList);
return 0;
}
内特定元素的信息?
答案 0 :(得分:0)
如果我认为那些和头文件也被包含在内,那么该程序有很多杂散编译错误。你没有检查那些?? 喜欢:选择和carPlate从未被宣布。上课不以&#39;;&#39;结尾。等
问题:1。你创造了一辆车&#39; a&#39;并且从不在成员变量中添加任何内容。我想info()函数应该这样做,那么为什么它没有被调用。我想你需要在某个循环中这样做。
您将carList矢量设为私有,并尝试将其作为参数从main传递给displayCarInfo()func。我希望你意识到这样的事情不会被要求作为同一个类的成员函数,它可以直接访问carList。你只需要使用一个对象来调用public函数。
由于向量是无界的(意味着它们的范围可以增长和缩小),因此使用常量循环打印向量的内容不是一个好主意。这样你总是冒着超越循环或运行不足的风险。
比较喜欢
for vector<string>::iterator it = carList.begin(); it!= carList.end(); it++) std::cout << *it << std::endl;
虽然使用ostream_iterators和std :: copy有更聪明的方法可以做同样的事情,但现在可以休息。
答案 1 :(得分:0)
您无需将向量作为参数传递给void displayCarInfo();
:
class Vehicle{ //<--- define classes starting with uppercase
private:
vector<string>carList;
public:
void info();
void displayCarInfo();
}; //<----- you need a semicolon here
终止条件应为矢量大小。
void vehicle::displayCarInfo(){
for(int i = 0; i < carList.size(); i++){
cout << carList[i];
}
}
main()
中的内容:
int main(){
vehicle a;
a.displayCarInfo();
return 0;
}