То, что вы заявляете в вопросе, не соответствует действительности.Два объекта действительно возвращены.Получите к ним доступ с помощью obj[0]
и obj[1]
.
Я полагаю, вы смотрите на obj
в отладчике, и среда IDE не может знать, что вы подразумеваете, что указатель obj
представляет собой массив из двух объектов,Так что во всплывающих подсказках будет отображаться только первый объект, obj[0]
или *obj
.Но другой объект, obj[1]
, определенно существует.
Добавьте следующую строку после вызова к a.function
:
printf("%d, %d, %d, %d\n", obj[0].i, obj[0].j, obj[1].i, obj[1].j);
, и вы увидите этот вывод:
1, 2, 3, 4
Обратите внимание, что в строке B* obj = new B();
нет никакого смысла, поскольку вы сразу перезаписываете obj
.Вы должны сделать это следующим образом:
B* obj = a.function();
Ваш код также немного опасен тем, что вы должны поддерживать a
как минимум, пока вы ссылаетесь на obj
.