В C ++, как вы получаете доступ к многомерному массиву в ClassA, из ClassB? - PullRequest
0 голосов
/ 20 октября 2018

"ClassA.h"

class ClassA {
public:
classArray[10][5];

void loadArray(){
//loads ints into array
}
};

"ClassB.h"

class classB {
void outputArray(){
ClassA classA;
cout << classA.classArray[1][1];
}

};

Всякий раз, когда я печатаю массив [1] [1], он выводит 0 на консоль.Несмотря на загрузку 7020 в него.В основном обе функции называются.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

У вас есть инициализированный ClassA экземпляр новой строки, и вы не вызвали loadArray на нем.Либо назовите это явно:

ClassA classA;
classA.loadArray(); // Here
cout << classA.classArray[1][1];

Или, если возможно, рассмотрите возможность перемещения этой логики в конструктор ClassA.

0 голосов
/ 20 октября 2018

Когда вы делаете это:

ClassA classA;
cout << classA.classArray[1][1];

вы вызываете Неопределенное поведение (UB), поскольку используется массив classA неинициализирован .Сначала загрузите в него целые числа и распечатайте его, так что вам, вероятно, нужно сделать это вместо этого:

ClassA classA;                       // create an object
classA.loadArray();                  // fill the array of the object
cout << classA.classArray[1][1];     // print a specific element
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...