Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;通过给定随机值的pass-by-reference分配的去引用指针_C++_Pointers_Multidimensional Array_Pass By Reference - Fatal编程技术网

C++ c++;通过给定随机值的pass-by-reference分配的去引用指针

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

我有一个指针数组,用来保存其他对象的内存位置。将数组添加到列表2中,并从该对象打印出一个值,我得到了正确的值。但是尝试从另一个函数打印它会给我随机值

课程:

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)