Каков наилучший способ справиться со следующей ситуацией?
Предположим, у меня есть что-то, что должно вести себя так:
class Foo
{
public:
Foo(Bar& bar):m_bar(bar){}
private:
Bar& m_bar;
};
Foo: s должен иметь действительную ссылку на Bar: s.Также разным Foo: s нужны разные или одинаковые Bar: s.
Я хочу хранить Foo: s в массиве.Однако, поскольку Foo потребует конструктор не по умолчанию, он не будет работать.
Я мог бы создать массив указателей на Foo: s, но затем мне нужно вызвать new и удалить для каждого объекта в этом массиве.
Я мог бы определить Foo следующим образом:
class Foo
{
public:
void init(Bar& bar)
{
m_bar=&bar;
}
private:
Bar* m_bar;
};
, но тогда можно создать неинициализированный Foo: s.
Как насчет размещения нового типа?