![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
KIDD |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
Не знаю, что я накосячил, но ща применил vector:
Выдает ошибку
Че ему не нравится; Класс (CMyPoint::CObject) наипростейший,урезал его полностью, оставив два пустых констр-деструктора и переменную CPoint point. |
||||
|
|||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Сорри, но тв пишешь
В силу опять таки своей ограниченности я не вижу у тебя СMyPoint с именем point. Cкорее всего, он Не принадлежит к классу CMyPoint и для не НЕ определен copy_constructor может в CMyPoint надо вставить CMyPoint& operator=(CPoint&); с следущим синтаксисом CMyPoint& СMyPoint::operator=(CPoint& p) { point=p; return *this; } Это сообщение отредактировал(а) Sined - 20.5.2004, 16:59 |
|||
|
||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
to mr.DUDA
А зделать нечто вроде такого не судьба?
|
||||
|
|||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Если мне не изменяет память this все-таки указатель, т.е. 4 байтовое число.и sizeof(this) должно вернуть 4, хотя это личное мнение кролика.
|
|||
|
||||
KIDD |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
Sined!
По фиг как писать -
либо
|
||||
|
|||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Сорри, но можно написать и так:
|
||||
|
|||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Это вопрос или утверждение? Если утверждение, то тогда приводи весь текст, где написано, что point--переменна класса CMyPoint; Если вопрос, то, видимо, не пофиг, если компилер ругается. |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
отвечаю KIDD'у и DENNN'у:
конструктор копирования необходим для классов, имеющих в своём составе поля, которые нельзя присвоить оператором "=". Компилятор сам сгенерирует конструктор копирования для класса CMyPoint, если все поля входящие в класс CMyPoint, можно присвоить оператором "=". Иначе (как и получилось у KIDD'а из-за переменной CPoint), требуется написать свой собственный конструктор копирования, в котором реализовать все сложные и не очень сложные процедуры присваивания полей одного объекта (p) другому (this)
не судьба для сложных объектов (имеющих в составе указатели и ссылки) -------------------- ![]() |
||||
|
|||||
KIDD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 19.3.2004 Репутация: 1 Всего: 1 |
Ok,извиняюсь, я погорячился, Sined!
Выдает ошибку error C2558: class 'CMyPoint' : no copy constructor available or copy constructor is declared 'explicit' Что неправильно???? |
|||
|
||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Вроде бы mr.DUDA ответил, что для сложных классов(CPoint )может тоже входит. Надо явно определять к.конструктор. Хотя по стандарту вроде бы любой класс поддерживает побитовое копирование и твой пример должен сработать. Если нет, то может сработать следующий пример.
CMyPoint::CMyPoint() :point() { } CMyPoint& СMyPoint::operator=(CPoint& p) { point=p; return *this; } т.е. разделить конструктор и присвоение. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |