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

Ошибка в классе - C++

Восстановить пароль Регистрация
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.05.2012, 16:08     Ошибка в классе #1
Не могу понять где ошибка
вот код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
using namespace std;
class time
{
  private:
          int chas;
          int min;
          int sek;
  public:
         time() : chas(0), min(0), sek(0)
         {}
         time(int c, int m, int s) : chas(c), min(m), sek(s)
         {}
       void show();
       void summ(time, time);
 
};
void time :: show()
{
  cout << "Âðåìÿ: ";
  cout << chas << "Г·Г*ñîâ " << min << " ìèГ*ГіГІ " << sek << " Г±ГҐГЄГіГ*Г¤" << endl;
  
}
void time :: summ(time t1, time t2)
{
  sek = t1.sek + t2.sek;
  if(sek > 60)
   {sek -= 60; min++;}
   min = t1.min + t2.min;
   if(min > 60)
   { min-=60; chas++; }
   chas = t1.chas + t2.chas;
}
int main()
{
    time t3;
    const time t1(2,36,20);
    const time t2(2,12,20);
    t1.show();
    cout << endl;
    t2.show();
    cout << endl;
    t3.summ(t1, t2);
    t3.show();
    cout << endl;
 
system("pause");
return 0;
}
Вот ошибки:
In function `int main()':
36 C:\Users\111\Desktop\Âðåìÿ.cpp expected `;' before "t3"
36 C:\Users\111\Desktop\Âðåìÿ.cpp [Warning] statement is a reference, not call, to function `time'
37 C:\Users\111\Desktop\Âðåìÿ.cpp `time' does not name a type
38 C:\Users\111\Desktop\Âðåìÿ.cpp `time' does not name a type
39 C:\Users\111\Desktop\Âðåìÿ.cpp `t1' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
41 C:\Users\111\Desktop\Âðåìÿ.cpp `t2' undeclared (first use this function)
43 C:\Users\111\Desktop\Âðåìÿ.cpp `t3' undeclared (first use this function)

Как єто исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 16:08     Ошибка в классе
Посмотрите здесь:

ошибка в классе C++
Ошибка в классе C++
Ошибка в классе C++
C++ Ошибка в классе
Ошибка в классе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.05.2012, 16:15     Ошибка в классе #2
Не стоит называть класс time.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 16:15     Ошибка в классе #3
Вы неудачное имя для класса взяли.
http://liveworkspace.org/code/2ce336...012f4ea6c0906e
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.05.2012, 16:23     Ошибка в классе #4
Но если уж очень хочется, то можно его определить в собственном пространстве имён. И потом использовать его с префиксом.

Добавлено через 6 минут
Ещё функция show константной должна быть.
Например так:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
 
namespace myspace
{
 
    class time
    {
        private:
            int chas;
            int min;
            int sek;
        public:
            time() : chas(0), min(0), sek(0)
            {}
            time(int c, int m, int s) : chas(c), min(m), sek(s)
            {}
            void show() const;
            void summ(time, time);
 
    };
 
    void time :: show() const
    {
        std::cout << "Время: ";
        std::cout << chas << "часов " << min << " минут " << sek << " секунд" << std::endl;
 
    }
    void time :: summ(time t1, time t2)
    {
        sek = t1.sek + t2.sek;
        if(sek > 60)
        {sek -= 60; min++;}
        min = t1.min + t2.min;
        if(min > 60)
        { min-=60; chas++; }
        chas = t1.chas + t2.chas;
    }
 
}
 
using namespace std;
 
int main()
{
    myspace::time t3;
    const myspace::time t1(2,36,20);
    const myspace::time t2(2,12,20);
    t1.show();
    cout << endl;
    t2.show();
    cout << endl;
    t3.summ(t1, t2);
    t3.show();
    cout << endl;
 
    system("pause");
    return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.05.2012, 16:42  [ТС]     Ошибка в классе #5
grizlik78, а что такое namespace myspace
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.05.2012, 16:43     Ошибка в классе #6
Объявление пространства имён с именем myspace. Подобно тому, как стандартные классы и функции помещены в пространство имён std
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
19.05.2012, 17:11  [ТС]     Ошибка в классе #7
Цитата Сообщение от grizlik78 Посмотреть сообщение
Объявление пространства имён с именем myspace. Подобно тому, как стандартные классы и функции помещены в пространство имён std
Это просто пишешь myspace и можно создавать класс с такими именинами как string time и т.д
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 17:16     Ошибка в классе
Еще ссылки по теме:

C++ Ошибка с полем в классе
C++ Ошибка в классе
C++ Ошибка c char в классе

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.05.2012, 17:16     Ошибка в классе #8
Да. Ключевое слово namespace, а вместо myspace можно выбрать какое-нибудь своё имя. Но ко всему, что определяется внутри пространства имён myspace извне обращаться придётся с префиксом myspace::
Yandex
Объявления
19.05.2012, 17:16     Ошибка в классе
Ответ Создать тему
Опции темы

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