Я делаю массив из 4 std :: list. Но когда я пытаюсь получить доступ к первому объекту A первого списка массива и вызвать для него метод callMe (), я получаю странный вывод.
Теперь могло произойти 2 вещи:
- Либо список был пуст.
- Объект был создан, когда я попытался получить доступ к первому элементу первого списка ((* (arrayOflistOfA [0] .begin ()))).
Подробности вышеупомянутых случаев:
- Если объект не был создан, я должен был получить исключение. Но я не получил никаких исключений, поэтому я предполагаю, что объект A был создан.
- Так что, если объект A действительно был создан, тогда конструктор должен был быть вызван.
Что мне не хватает?
#include <iostream>
using namespace std;
class A {
public:
A() {
cout<<"Constructor called"<<endl;
x=20;
}
void callMe();
private:
int x;
};
void A::callMe() {
cout<<"Value of x = "<<x<<endl;
}
int main() {
const int size = 4;
list<A>* arrayOflistOfA = new list<A>[size];
(*(arrayOflistOfA[0].begin())).callMe();
}
Вывод:
Value of x = 0
но результат должен был быть:
Constructor called
Value of x = 20