![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| KasMP |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: нет Всего: 30 |
Приветствую вас, мои самые-самые
Предполагается такая структура классов и их наследников:
Сейчас важны только Figure и Point.
Предполагается, что точка задана в файле примерно так:
С конструктором фигуры все очевидно (но приведу его на всякий случай - вдруг ключ к разгадке проблем именно в нем):
С конструктором точки все тоже очевидно, но почему-то не работает:
Т.е. получается так: мы узнали, что впереди точка; сначала вызвался конструктор Фигуры и прочитал цвет пера; потом вызвался конструктор производного класса Точка и прочитал координаты. Но VS 2008 Express Edition совсем не думает, что все правильно и просто:
Я совсем не понимаю, что не так и что можно с этим сделать Это сообщение отредактировал(а) KasMP - 15.7.2009, 12:17 |
||||||||||||||
|
|||||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в объявлении конструктура список инициализации лишний. P.S. привет.. давно тебя не было видно Добавлено @ 12:23
не очень хорошое решение, чтоб объект базового класса знал о возможных наследниках. Добавлено @ 12:24 P.S.. я так понял Вы теперь наконец то дошли до классов Добавлено @ 12:33 я надеюсь, что Point (:Figure) не используется как примитив Point для остальных фигур в том смысле, что точка-фигура и геометрическая точка на плоскости два разных объекта. Это сообщение отредактировал(а) mes - 15.7.2009, 12:37 |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Почему? В списке инициализации вызван конструктор базового класса, другое дело, что он вызван неправильно.
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
потому что это декларация, а не определение конструктора. кстати да, в определении конструктора список инициализации вызывается неверно. Это сообщение отредактировал(а) mes - 15.7.2009, 13:00 |
|||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Здесь синтаксическая ошибка. Правильно вот так class Point : public Figure { ... public: Point (ifstream *f): Figure(ifstream *f,'1'); ... }; Это сообщение отредактировал(а) Леопольд - 15.7.2009, 13:00 -------------------- вопросов больше чем ответов |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Я опоздал -------------------- вопросов больше чем ответов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
и {} забыл Это сообщение отредактировал(а) mes - 15.7.2009, 13:06 |
|||
|
||||
| Леопольд |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Я и сам забыл что список инициализации надо писать в определении конструктора, а в объявлении нельзя... Т.е. правильно вот так:
Или так:
Это сообщение отредактировал(а) Леопольд - 15.7.2009, 14:27 -------------------- вопросов больше чем ответов |
||||||
|
|||||||
| KasMP |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: нет Всего: 30 |
Спасибо вам огромное! Я бы еще долго искала эту незаметную ошибку... Глупее не придумать Я думаю, я совсем уберу этот член: по типу переменной и так понятно, к какому классу-наследнику относится объект - зачем дублировать еще раз Да ладно, с ошибками даже лучше: человек больше вдумывается, больше понимает, больше пишет сам, ... Неправда А ты здесь уже совсем освоился Мы давно до них дошли Нет, конечно Как тебе вообще такая мысль в голову пришла |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну так это больше там, чем здесь
посмотрел повнимательней, действительно нет : приношу извинения за ложную тревогу. просто это самая распространенная ошибка при составлении иерархии классов фигур. кстати заглавными буквами в C++ принято именовать макросы, и некрасиво смотрится когда также называют типы или переменные. |
||||
|
|||||
| KasMP |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: нет Всего: 30 |
Заглядывай туда чаще - там тоже интересно
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ах да.. забыл про эти "пережитки" .. в .Net они уже называются "по-человечески": http://msdn.microsoft.com/ru-ru/library/system.drawing.aspx P.S. ox чувствую, что достанется мне сейчас за эти "пережитки", "по-человечески" и за оскорбление религиозных чувств. будем надеяться, что пронесет.. |
|||
|
||||
| KasMP |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: нет Всего: 30 |
Имхо логично придерживаться правил, связанных именно с тем, где ты сейчас, а не правил какого-то мифического пространства
Конечно, достанется |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |