C++ c++;通过给定随机值的pass-by-reference分配的去引用指针
我有一个指针数组,用来保存其他对象的内存位置。将数组添加到列表2中,并从该对象打印出一个值,我得到了正确的值。但是尝试从另一个函数打印它会给我随机值 课程:C++ c++;通过给定随机值的pass-by-reference分配的去引用指针,c++,pointers,multidimensional-array,pass-by-reference,C++,Pointers,Multidimensional Array,Pass By Reference,我有一个指针数组,用来保存其他对象的内存位置。将数组添加到列表2中,并从该对象打印出一个值,我得到了正确的值。但是尝试从另一个函数打印它会给我随机值 课程: class Airline() { Airline(); Flight *list2[20]; //array of pointers to Flight }; class Flight() { int flightNo; int MaxPeople; }; 添加航班功能: currentPos1 =-1 //Global Va
class Airline() {
Airline();
Flight *list2[20]; //array of pointers to Flight
};
class Flight() {
int flightNo;
int MaxPeople;
};
添加航班功能:
currentPos1 =-1 //Global Variable
void Airline::addFlight(Flight flight) {
currentPos1++;
list2[currentPos1] = &flight;
cout <<(*list2[currentPos1]).flightNo <<"\n"; //Gives proper Value
}
void AirDB::showAllFlights() {
for (int i = 0; i <= currentPos1; i++)
{
//Both cout's provide random values;
cout <<"\nFlight Number: " <<list2[i]->flightNo;
cout <<"\nMaxPeople: " << list2[i]->maxPeople;
}
}
currentPos1=-1//全局变量
无效航空公司::添加航班(航班航班){
currentPos1++;
列表2[currentPos1]=&flight;
cout这里有一个问题:
list2[currentPos1]=&flight;
这将不起作用,因为您正在为临时航班
分配指针。当addFlight
函数返回时,该指针不再有效
您要做的是通过引用传递航班
(最好是常量
引用):
请注意,这取决于发送到addFlight
的参数的生存期。对于此特定函数,flight
将是有效的,但在函数调用之后,您发送的参数也必须在您打算使用存储在list2
中的指针的生存期内有效
使用std::vector
而不是指向Flight
的指针数组将是一个更简单的解决方案。这里有一个问题:
list2[currentPos1]=&flight;
这将不起作用,因为您正在为临时航班
分配指针。当addFlight
函数返回时,该指针不再有效
您要做的是通过引用传递航班
(最好是常量
引用):
请注意,这取决于发送到addFlight
的参数的生存期。对于此特定函数,flight
将是有效的,但在函数调用之后,您发送的参数也必须在您打算使用存储在list2
中的指针的生存期内有效
使用std::vector
而不是Flight
的指针数组将是一个更简单的解决方案。注释//指向指针的指针数组
应为指向航班的指针数组
。航班不是指针。注释//指向指针的指针数组
应为指针数组到Flight
。Flight不是指针。这可能无法解决问题,因为调用参数可能会在HankYou之后不久结束其生命周期。这正是我所缺少的。这可能无法解决问题,因为调用参数可能会在HankYou之后不久结束其生命周期。这正是我所缺少的。
void Airline::addFlight(const Flight& flight)