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