Код: Выделить всё
class A
{
public:
A(B& m)
{
this->m = m
}
private:
B& m;
};
//
void SomeLongLivedClass::someFunction()
{
B m = createB();
A a = new A{ m }
// m goes out of scope
}
Я решил создать B вне A, чтобы уменьшить беспорядок в A, но, может быть, это в корне неправильный способ? Я немного читал о композиции и агрегации - неправильно ли делать композицию, помещая объекты в такой класс?
Я думал о передаче m как std::unique_ptr< B>, но я не могу понять, выйдет ли m из области видимости или нет, и вместо этого оставить указатель висеть.
Само собой разумеется что это всего лишь псевдокод и реальная ситуация сложнее. Создание B немного сложнее, поэтому я хотел сделать это вне A.
Подробнее здесь: https://stackoverflow.com/questions/791 ... site-class
Мобильная версия