2013-02-26 3 views
0

У меня есть следующие классы.конструктор копирования производного от вектора класса

class CA { 
... 
}; 

class CB: public vector<CA> { 
... 
}; 

Как реализовать конструктор копирования CB? то есть

CB(CB& cb). 

Как скопировать содержимое вектора cb?

+7

Пожалуйста, не получает стандартные контейнеры. –

+0

Компилятор, предоставленный конструктором копии, должен работать нормально. Однако есть причины не наследовать от 'std :: vector', * особенно * публично. – juanchopanza

+0

std :: контейнеры не должны быть получены. – 111111

ответ

1

Игнорирование проблемы с публичным наследованием от 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); 
} 
+0

Для вектора это будет так? т. е. «CB (const CB & cb): вектор (cb) {}' –

+0

@ jason.Z Да, вектор ничем не отличается. Он имеет полезные конструкторы копирования и все. – juanchopanza

+0

Я правильно? Я отредактировал комментарии выше ... –

Смежные вопросы