Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Константные объекты 
:(
    Опции темы
NoNo
Дата 14.12.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Я изучаю C++ и вот какой у меня вопрос........

В книге, по которой я прохожу обучение, написано, что "если объект класса объявлен с модификатором const, он становится недоступным для изменения и для такого объекта можно вызывать только  константные методы....."

и приведён пример:
Код

#include <iostream>
#include <conio.h>
using namespace std;
class Distance
{
    private:
       int feet;
       float inches;
    public:
       Distance(int ft, float in) : feet(ft), inches(in)
       {}
       void  getdist()
       {
          cout << "\nVvedite chislo futov: ";
          cin >> feet;
          cout << "\nVvedite chislo dyuymov: ";
          cin >> inches;
       }
       void showdist() const
       {cout << feet << "\'-" << inches << '\"';}
};
int main()
{
   const Distance football(300, 0);
   football.getdist(); // ошибка (метод не является константным)
   football.showdist();
   getch();
   return 0;
}


я откомпелировал его в среде C++Builder и в результате компилятор выдал только предупреждение, но программа запустилась и работает.......

Почему так?
PM MAIL   Вверх
FelikZ
Дата 14.12.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Когда я компилю получай такую ошибку:
error C2662: 'Distance::getdist' : cannot convert 'this' pointer from 'const Distance' to 'Distance &'


--------------------
user posted image
PM WWW ICQ Skype   Вверх
JackYF
Дата 14.12.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(NoNo @  14.12.2006,  21:36 Найти цитируемый пост)
C++Builder 

По-умолчанию компилирует без режима ANSI - совместимости и действительно грешит подобным.
Выставь в настройках проекта ANSI-компиляцию...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
NoNo
Дата 15.12.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



ок спасибо.....разобрался smile 
PM MAIL   Вверх
Любитель
Дата 15.12.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Не хотелось бы казаться наглым, но я бы советовал всё-таки пользоваться более авторитетным компилером. Многие серьёзные либы (которые используют) нормальные возможности стандартного C++, особенно это касается шаблонов, вынужденны городить кучу воркэраундов для борланда. Даже с любыми флагами (насколько я знаю) множество нормального кода борланд не компилит (или компилит неправильно).


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 15.12.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  15.12.2006,  11:44 Найти цитируемый пост)
Даже с любыми флагами (насколько я знаю) множество нормального кода борланд не компилит (или компилит неправильно). 

Согласен.

Builder 6, насколько я знаю, не компилит STL, которая с ним поставляется, при условии ANSI-компиляции, потому как там, видать, тоже нагородили чего-то не очень стандартного....



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SaDFromSpb
Дата 15.12.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(Любитель @  15.12.2006,  11:44 Найти цитируемый пост)
Даже с любыми флагами (насколько я знаю) множество нормального кода борланд не компилит (или компилит неправильно).

Цитата(JackYF @  15.12.2006,  16:10 Найти цитируемый пост)
Builder 6, насколько я знаю, не компилит STL, которая с ним поставляется, при условии ANSI-компиляции, потому как там, видать, тоже нагородили чего-то не очень стандартного....

... нда видимо не зря я так "любил" борланд... Еще когда после него удивлялся, что в самом си нет паскалеподобных строк. Ребята там очень уж любят чего-нить оригинальненкого наваять.



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.