Цепная инициализация без временных указателей - PullRequest
0 голосов
/ 25 марта 2011

Объект класса A создается из объекта класса B, который наследуется классом C.Как создать объект A без временных указателей на объект B?

B *my_b = new C();
A *my_a = new A( *my_b );
// but *my_b is only used here

Обновление: конструктор A принимает в качестве аргумента B, а не C.

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

Если вам не нужно сохранять объект типа B и конструктор class A копирует объект и не хранит ссылку на него:

A* my_a = new A( B() );

в противном случае вы не можете сделать что-то намного лучше, чем то, что вы уже делаете.

0 голосов
/ 25 марта 2011

Не используйте new, если у вас нет причины.

A my_a = A( B() );

Или если есть причина для new my_a:

A * my_a = new A( B() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...