| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ошибка в методе |
| Автор: Rickert 17.3.2008, 16:58 | ||||||
Ничего понять не могу:
Ошибки:
Метод avGetData() описан в классе aVector:
pos - float[3]. Почему ошибки? |
| Автор: Daevaorn 17.3.2008, 17:01 |
| Метод avGetData должен быть константным. |
| Автор: Graf_h 17.3.2008, 18:03 | ||
Вот попытался смоделировать то что утебя! Все работает! я убрал const от Vec &x1,Vec &x2 так как их функция возвращает const значение! думаю ошибка в этом! я так понял компиятор не может привести к типу & Vec! на мой взгляд это самый правильный выход из даной ситуации |
| Автор: Rickert 17.3.2008, 18:08 | ||
| Graf_h, нет, const терять нельзя. Daevaorn, а в чём смысл этого самого const? я поставил сразу после объявления функции:
А заработало. |
| Автор: bsa 17.3.2008, 18:15 |
| Rickert, этот конст означает, что твой метод не меняет поля класса (другими словами, this указывает на константный объект). |
| Автор: Graf_h 17.3.2008, 18:26 |
| и у меня заработало На мой взгляд тело твоей функции невкоем случае не поменяет значения vec и vec2! Мне кажется здесь можно обойтись и без const! Хотя если я ошибаюсь, тогда скажи вчем! Сам хочу разобратся... |
| Автор: bsa 17.3.2008, 18:55 |
| Graf_h, const нужен для того, чтобы в будущем не допустить ошибок. А потом, это еще один уровень контроля. Если ты вместо одного оператора в теле функции использовал другой, который меняет данные класса, то компилятор тебя отругает и укажет место ошибки. И ты ее быстро исправишь. В принципе, можно вообще писать классы, размещая все поля в публичной зоне, не используя const и пр. И, возможно, программа будет работать. Вот только через год, когда в эту программу придется что-то добавить, возникнет куча проблем - вставил одно, сломалось другое, починил, испортилось третье, исправил перестало работать то, ради чего стал переделывать. А почему? А потому, что все забылось, а код позволяет вносить в себя любые изменения, не контроллирая их. |
| Автор: Graf_h 17.3.2008, 19:00 |
| Спасибо! все понял! Думаю Rickert тему можно пометить решеной! |
| Автор: Rickert 18.3.2008, 04:11 |
| Всем спасибо! |