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

что то не так с компилятором? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 11:52     что то не так с компилятором? #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 <cstdlib>
#include <iostream>
#include <conio.h>
 
class time
{
      private:
              int hrs, mins, secs;
      public:
             time() : hrs(0), mins(0), secs(0)
             {}
             time(int h, int m, int s) : hrs(h), mins(m), secs(s)
             {}
             void display();
             void add_time(time t1, time t2);             
};
 
void time::display()
{
     std::cout << hrs << ":" << mins << ":" << secs << "\n";
}
void time::add_time(time t1, time t2)
{
     secs = t1.secs + t2.secs;
     if(secs > 59)
     {
             secs = secs - 60;
             mins++;
     }
     mins = t1.mins + t2.mins;
     if(mins > 59)
     {
             mins = mins - 60;
             hrs++;
     }
     hrs = t1.hrs + t2.hrs;
}
 
int main(int argc, char *argv[])
{
    time time1(5, 59, 59);
    time time2(4,30,30);
    time time3;
    time3.add_time(time1, time2);
    std::cout << "time3 = " << time3.display;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
ошибки:

\projects\1\new.cpp expected `;' before "time1"
\projects\1\new.cpp [Warning] statement is a reference, not call, to function `time'
\projects\1\new.cpp expected `;' before "time2"
.
.
.
что не так??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
24.06.2011, 11:53     что то не так с компилятором? #2
....
а код ?
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 12:04  [ТС]     что то не так с компилятором? #3
co6ak, см. выше
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
24.06.2011, 12:09     что то не так с компилятором? #4
C++
1
2
    std::cout << "time3 = ";
    time3.display();
работает

Добавлено через 42 секунды
получалось
cout << "time3 = " << cout <<.....
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 12:13  [ТС]     что то не так с компилятором? #5
то же самое, а вообще мне кажется что у меня проблемы с конструктором - т.к. почему то ругается на первую строку после main()
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
24.06.2011, 12:15     что то не так с компилятором? #6
хз.
попробуй конструктор по умолчанию задать как
time( int =0, int =0, int =0);
без скобок фигурных всяких. наф они не нужны там.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 12:23  [ТС]     что то не так с компилятором? #7
в книге автор рекомендует именно со скобочками , хотя после рекомендации он почему то не аргументировал такое решение.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
24.06.2011, 12:28     что то не так с компилятором? #8
в отдельные файлы определение и реализацию класса вынеси
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.06.2011, 12:32     что то не так с компилятором? #9
grrrrr, ошибка в 45-й строке

Цитата Сообщение от grrrrr Посмотреть сообщение
в книге автор рекомендует именно со скобочками
и правильно делает, если конструктор пустой, чтобы сразу было видно что он пустой

Добавлено через 24 секунды
да и conio.h здесь нафиг не нужен
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 12:55  [ТС]     что то не так с компилятором? #10
и еще вопрос - по классам. При объявлении класса, авторы книг иногда описывают сначала закрытые, а потом открытые элементы или наоборот. Я так понимаю , что разницы нет?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2011, 13:19     что то не так с компилятором? #11
grrrrr, нету
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
24.06.2011, 13:23     что то не так с компилятором? #12
grrrrr, разницы нет, но в начале класса можно не писать private: а в начале структуры можно не писать public: так как они подразумеваются по умолчанию.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 13:28  [ТС]     что то не так с компилятором? #13
ForEveR, ну я так и думал.
а теперь скажите, почему у меня эта прога не компилируется? Только что, разбил на файлы как посоветовал охотник, компилировал в wxDev-cpp.

1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
int main(int argc, char *argv[])
{    
    time time1(5, 59, 59);
    time time2(4,30,30);
    time time3;
    time3.add_time(time1, time2);
    std::cout << "time3 = " << time3.display;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
time1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef TIME1_H
#define TIME1_H
 
class time
{
      private:
              int hrs, mins, secs;
      public:
            
             time() : hrs(0), mins(0), secs(0)
             {}
             time(int h, int m, int s) : hrs(h), mins(m), secs(s)
             {}
             void display();
             void add_time(time t1, time t2);             
};
 
#endif
time1.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include "time1.h"
 
void time::display()
{
     std::cout << hrs << ":" << mins << ":" << secs << "\n";
}
void time::add_time(time t1, time t2)
{
     secs = t1.secs + t2.secs;
     if(secs > 59)
     {
             secs = secs - 60;
             mins++;
     }
     mins = t1.mins + t2.mins;
     if(mins > 59)
     {
             mins = mins - 60;
             hrs++;
     }
     hrs = t1.hrs + t2.hrs;
}
может кто подскажет? Ну или у кого компилируется, напишите какой у вас компилятор.
ЗЫ. Пробовал компилировать другие проекты с классами- все норм.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
24.06.2011, 13:33     что то не так с компилятором? #14
time1.h надо подключать во всех модулях .cpp, где используется класс time

Добавлено через 1 минуту
Ну и ошибка в строке 10 файла 1.cpp так и не была исправлена
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2011, 13:34     что то не так с компилятором? #15
Не советую я так класс называть. Или в namespace хоть завертывайте.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 13:41  [ТС]     что то не так с компилятором? #16
ForEveR, точно!!! теперь вот ошибка одна ошибка:

47 C:\Dev-Cpp\projects\1\new.cpp statement cannot resolve address of overloaded function

ругается на 2 строку

C++
1
2
std::cout << "time3 = ";
time3.display;
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.06.2011, 13:45     что то не так с компилятором? #17
grrrrr, Ну дык это ж вызов функции все таки. Скобки забыли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 13:49     что то не так с компилятором?
Еще ссылки по теме:

Война с компилятором C++
что-то с компилятором C++
Как сделать так чтоб работало? Что с компилятором? C++

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

Или воспользуйтесь поиском по форуму:
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.06.2011, 13:49  [ТС]     что то не так с компилятором? #18
Все работает! Спасибо!
Yandex
Объявления
24.06.2011, 13:49     что то не так с компилятором?
Ответ Создать тему
Опции темы

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