Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.228.88] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте, по ходу написания моего знаменитого демо возник такой вопрос
есть к примеру класс: class A { public: A() {} ~A() {} CArray<int> array; }; так вот след код не компилируется A a; A b = a; //<-- ругается типо нет копировщика пишет что: "error C2280: 'A::A(const A &)': attempting to reference a deleted function" а вот если заменить например на std::vector то компилируется естесвено если определить в первом случае копировщик то все компилируется class A { public: A() {} A(const A& a) {} ~A() {} CArray<int> array; }; |
Сообщ.
#2
,
|
|
|
Дефолтовый конструктор копирования просто пытается вызвать конструкторы копирования всех членов класса. У CArray его нет, поэтому и у А он тоже не генерируется.
|
Сообщ.
#3
,
|
|
|
Цитата OpenGL @ Дефолтовый конструктор копирования просто пытается вызвать конструкторы копирования всех членов класса. У CArray его нет, поэтому и у А он тоже не генерируется. да затупил в очередной раз щас глянул сорсы CArray в нем вроде все норм, а вот в CObject от которого он наследован, копировщик закрыт Добавлено на самом деле я не сразу понял в чем дело, я думал что нет копировщика в классе А, ну т.е. типо надо его явно определить, что вроде как не обязательно если его нет то компилятор сам генерит, из этого весь сыр-бор |