Где тут ошибка?
Цель программы: сложить 2 значения времени.
class time { private: int hours, mins, secs; public: time() : hours(0), mins(0), secs(0) {} time(int h, int m, int s) : hours(h), mins(m), secs(s) {} void display()const {cout << "timesum: " << hours << ':' << mins << ':' << secs << endl;} void timesum(time t1, time t2) { secs = t1.secs + t2.secs; if(secs > 59) {secs -=60; mins++;} mins +=t1.mins + t2.mins; if(mins > 59) {secs -=60; hours++;} hours +=t1.hours + t2.hours; } }; int main() { const time t1(5,59,59); const time t2(2,43,22); time tsum; tsum.timesum(t1,t2); tsum.display(); system("pause"); return 0; }
Ответ
void display()const { time(int h, int m, int s) : hours(h), mins(m), secs(s) {}
Это Лаффоре)
То же самое, что:
time(int h, int m, int s) { hours = h; mins = m; secs = s; }
С time() : hours(0), mins(0), secs(0) {} - то же самое, только нулями инициализирует, а не значениями h, m, s.
Если ты только начинаешь, то пиши как проще.
По проблеме: Замени везде "time" на "Time" и все скомпилируется.
Видишь ли, у Майкрасофта описана функция с именем "time" в stdlib.h(который наверняка содержится по стандарту). Из-за этого и была путаница, не думай, что это обычный случай, я и сам удивлён.
Смотрите также:
Комментарии
я немного работал на с++, впервые вижу конструкции типа:
void display()const { time(int h, int m, int s) : hours(h), mins(m), secs(s) {}
Ошибка 1 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "t1" e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 34 1 ConsoleApplication2
Предупреждение 2 warning C4551: в вызове функции отсутствует список аргументов e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 34 1 ConsoleApplication2
Ошибка 3 error C3861: t1: идентификатор не найден e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 34 1 ConsoleApplication2
Ошибка 4 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "t2" e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 35 1 ConsoleApplication2
Предупреждение 5 warning C4551: в вызове функции отсутствует список аргументов e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 35 1 ConsoleApplication2
Ошибка 6 error C3861: t2: идентификатор не найден e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 35 1 ConsoleApplication2
Ошибка 7 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "tsum" e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 36 1 ConsoleApplication2
Предупреждение 8 warning C4551: в вызове функции отсутствует список аргументов e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 36 1 ConsoleApplication2
Ошибка 9 error C2065: tsum: необъявленный идентификатор e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 36 1 ConsoleApplication2
Ошибка 10 error C2065: tsum: необъявленный идентификатор e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 37 1 ConsoleApplication2
Ошибка 11 error C2228: выражение слева от ".timesum" должно представлять класс, структуру или объединение e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 37 1 ConsoleApplication2
Ошибка 12 error C2065: t1: необъявленный идентификатор e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 37 1 ConsoleApplication2
Ошибка 13 error C2065: t2: необъявленный идентификатор e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 37 1 ConsoleApplication2
Ошибка 14 error C2065: tsum: необъявленный идентификатор e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 38 1 ConsoleApplication2
Ошибка 15 error C2228: выражение слева от ".timesum" должно представлять класс, структуру или объединение e:\users\влад\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp 38 1 ConsoleApplication2
16 IntelliSense: требуется точка с запятой ";" e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 34 7 ConsoleApplication2
17 IntelliSense: требуется точка с запятой ";" e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 35 7 ConsoleApplication2
18 IntelliSense: требуется точка с запятой ";" e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 36 7 ConsoleApplication2
19 IntelliSense: идентификатор "tsum" не определен e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 37 2 ConsoleApplication2
20 IntelliSense: идентификатор "t1" не определен e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 37 15 ConsoleApplication2
21 IntelliSense: идентификатор "t2" не определен e:\Users\Влад\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.cpp 37 18 ConsoleApplication2
PS. 34 строка:
time t1(5,59,59);
Странно, вроде с учебника списал. У меня проблема с классами, не очень понимаю их принцип действия.
void display()const { time(int h, int m, int s) : hours(h), mins(m), secs(s) {}
Это Лаффоре)
То же самое, что:
time(int h, int m, int s) { hours = h; mins = m; secs = s; }
С time() : hours(0), mins(0), secs(0) {} - то же самое, только нулями инициализирует, а не значениями h, m, s.
Если ты только начинаешь, то пиши как проще.
По проблеме: Замени везде "time" на "Time" и все скомпилируется.
Видишь ли, у Майкрасофта описана функция с именем "time" в stdlib.h(который наверняка содержится по стандарту). Из-за этого и была путаница, не думай, что это обычный случай, я и сам удивлён.
Suite:
((цитата
void display()const { time(int h, int m, int s) : hours(h), mins(m), secs(s) {}
))
Это Лаффоре)
То же самое, что:
""
time(int h, int m, int s) { hours = h; mins = m; secs = s; }
""
С time() : hours(0), mins(0), secs(0) {} - то же самое, только нулями инициализирует, а не значениями h, m, s.
Если ты только начинаешь, то пиши как проще.
Что с цитированием? Почему оно такое кривое?
Что с цитированием? Почему оно такое кривое?
Ты про что? (я сначала сделал цитату, потом удалил строчку void display()const - не этот метод хотел описать )
Praytic:
Что с цитированием? Почему оно такое кривое?
Или ты про то, что цитирование склеивает две строчки цитаты сьюта? Я выдеделил 2 строки и оно так процитировалось, если бы я нажал цитату коммента, то не склеились бы.
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]