Игнорирование проблемы с публичным наследованием от std::vector
, если вам действительно нужен конструктор копирования для вашего производного типа (например, если вы управляете динамически распределенными ресурсами), то вы можете использовать список инициализации конструктора, как в этом пример, где Foo
занимает место вашего std::vector
в иерархии наследования:
#include <iostream>
struct Foo
{
Foo() {}
Foo(const Foo&) { std::cout << "Copy Foo\n";}
};
struct Bar : public Foo
{
Bar() {}
Bar(const Bar& b) : Foo(b) {}
};
int main()
{
Bar b1;
Bar b2(b1);
}
Пожалуйста, не получает стандартные контейнеры. –
Компилятор, предоставленный конструктором копии, должен работать нормально. Однако есть причины не наследовать от 'std :: vector', * особенно * публично. – juanchopanza
std :: контейнеры не должны быть получены. – 111111