Форум программистов, компьютерный форум CyberForum.ru

Имя класса - C++

Восстановить пароль Регистрация
 
sergIKO
3 / 3 / 1
Регистрация: 20.01.2010
Сообщений: 91
22.01.2010, 12:06     Имя класса #1
Проблема в следующем: почему при имени класса "distance" программа отказывается работать?как только я меняю имя класса,например убираю последнюю букву, все запускается. Неужели на работоспособность программы влияет конкретное имя?! ерунда какая-то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <conio.h>
using namespace std;
 
class distance
{
private:
    int feet;
    float inches;
public:
    distance(): feet(0),inches(0.0)
    {}
    distance(int ft,float in): feet(ft),inches(in)
    {}
    void showdist()
    {
        cout<<feet<<"\' "<<inches<<"\""<<endl;
    }
};
int main()
{
    distance d1;
    distance d2(4,3.45f);
    d1.showdist();
    d2.showdist();
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.01.2010, 12:08     Имя класса #2
e - если написана на русском ошибка по любому.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
22.01.2010, 12:10     Имя класса #3
Что значит "отказывается работать" ??? Как именно отказывается?
Hint: в пространстве имен std тоже есть функция distance...... если дело в этом, то вот вред повсеместного использования using namespace std;
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
22.01.2010, 12:13     Имя класса #4
CheshireCat,

Hint: в пространстве имен std тоже есть функция distance...... если дело в этом, то вот вред повсеместного использования using namespace std;

Фишка в том, что студни кроме cin/cout больше ничего не используют, а имена функций пишут транскрипцией на латинице, поэтому им можно
sergIKO
3 / 3 / 1
Регистрация: 20.01.2010
Сообщений: 91
22.01.2010, 12:27  [ТС]     Имя класса #5
Цитата Сообщение от Genius Ignat Посмотреть сообщение
e - если написана на русском ошибка по любому.
да нет, на английском

Цитата Сообщение от CheshireCat Посмотреть сообщение
Что значит "отказывается работать" ??? Как именно отказывается?
Hint: в пространстве имен std тоже есть функция distance...... если дело в этом, то вот вред повсеместного использования using namespace std;
>h:\documents and settings\администратор\мои документы\visual studio 2008\projects\objects\main.cpp(22) : error C2872: distance: неоднозначный символ
1> может быть 'h:\documents and settings\администратор\мои документы\visual studio 2008\projects\objects\main.cpp(6) : distance'
1> или 'h:\program files\microsoft visual studio 9.0\vc\include\xutility(1881) : iterator_traits<_Iter>::difference_type std::distance(_InIt,_InIt)'
1>h:\documents and settings\администратор\мои документы\visual studio 2008\projects\objects\main.cpp(23) : error C2872: distance: неоднозначный символ
1> может быть 'h:\documents and settings\администратор\мои документы\visual studio 2008\projects\objects\main.cpp(6) : distance'
1> или 'h:\program files\microsoft visual studio 9.0\vc\include\xutility(1881) : iterator_traits<_Iter>::difference_type std::distance(_InIt,_InIt)'

Изменил distance на Distance - заработало.Похоже Вы правы спасибо
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
22.01.2010, 13:40     Имя класса #6
iterator_traits<_Iter>::difference_type std::distance(_InIt,_InIt) - это и есть та самая функция distance. Короче, старайся не использовать using namespace std; Пространства имен не так просто придуманы. Если бы ты написал правильно, ошибка бы даже не возникла.
Yandex
Объявления
22.01.2010, 13:40     Имя класса
Ответ Создать тему
Опции темы

Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru