Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2011, 17:06   #1
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию Описание методов вне класса

Код:

#include "stdafx.h"

using namespace std;
#include "iostream"

class time{
public:
	
	time(); //constructor po umolchaniu
	time(int,int,int);//constructor s parametrami
	int timeprint1();
	int timeprint2();
	int getC();
	int getM();
	int getS();
private:
    int chas,min,sec;
};



//opredelenie metodov
time::time(int a, int b,int c){
	if((a>0)&&(a<24)&&(b>0)&&(b<60)&&(c>0)&&(c<60)){
	   chas=a;
	   min=b;
	   sec=c;
	}
	else 
		cout << "Error .. dannie vvedeni nepravilno"<< endl;
	}

int time::timeprint1(){
	cout << chas << " chasov " << min << " minut " << sec << " secundi " << endl;
	return 0;
}

int time::timeprint2(){
	bool f;
	f=(chas>12)?0:1;
	if(f) cout << chas << " a.m. " ;
	else cout << chas-12 << " p.m. " ;
	cout << min << " minut " << sec << " secundi " << endl;
	return 0;
}

int time::getC(){
	return chas;
}

int time::getM(){
	return min;
}

int time::getS(){
	return sec;
}

int main()
{
   time g[100];
   int n,a,b,c,l;
   cout << "vvedite kolicestvo obiectov time " << endl;
   cin >> n ;
   for(int i=0;i<n;i++){
	   cout << " Vvedite time " << i << endl;
	   cin >> a >> b >> c;
	   g[i]::time(a,b,c);
   }
   cout << "Viberite element dlea vivioda";
   cin >> l;
   g[l]::timeprint1();
   g[l]::timeprint2();
   system("pause");
    return 0;
}
Выдается следующий набор ошибок
Код:
1>laba2c++.cpp(70): error C2143: syntax error : missing ';' before 'time'
1>laba2c++.cpp(74): error C2039: 'timeprint1' : is not a member of '`global namespace''
1>laba2c++.cpp(74): error C2146: syntax error : missing ';' before identifier 'timeprint1'
1>laba2c++.cpp(74): error C3861: 'timeprint1': identifier not found
1>laba2c++.cpp(75): error C2039: 'timeprint2' : is not a member of '`global namespace''
1>laba2c++.cpp(75): error C2146: syntax error : missing ';' before identifier 'timeprint2'
1>laba2c++.cpp(75): error C3861: 'timeprint2': identifier not found
В чем проблема ?
Вроде что то с описанием методов timeprint1 и timeprint2, а что именно не понятно
Jugger вне форума Ответить с цитированием
Старый 16.10.2011, 17:28   #2
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Jugger Посмотреть сообщение
Код:

//opredelenie metodov
time::time(int a, int b,int c){
	if((a>0)&&(a<24)&&(b>0)&&(b<60)&&(c>0)&&(c<60)){
	   chas=a;
	   min=b;
	   sec=c;
	}
	else 
		cout << "Error .. dannie vvedeni nepravilno"<< endl;
	}

int time::timeprint1(){
Выдается следующий набор ошибок
Код:
1>laba2c++.cpp(70): error C2143: syntax error : missing ';' before 'time'
1>laba2c++.cpp(74): error C2039: 'timeprint1' : is not a member of '`global namespace''
1>laba2c++.cpp(74): error C2146: syntax error : missing ';' before identifier 'timeprint1'
1>laba2c++.cpp(74): error C3861: 'timeprint1': identifier not found
1>laba2c++.cpp(75): error C2039: 'timeprint2' : is not a member of '`global namespace''
1>laba2c++.cpp(75): error C2146: syntax error : missing ';' before identifier 'timeprint2'
1>laba2c++.cpp(75): error C3861: 'timeprint2': identifier not found
В чем проблема ?
Вроде что то с описанием методов timeprint1 и timeprint2, а что именно не понятно
Я думаю, что у вас пропущена закрывающаяся фигурная скобка в определении конструктора, текст которого я из вашего примера специально привел.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 17.10.2011, 18:55   #3
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию

Да нет, там всего вроде хватает
В ифе открывающая и закрывающая скобка, и в начале и конце описания конструктора
Jugger вне форума Ответить с цитированием
Старый 17.10.2011, 19:08   #4
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Код:
time::time(int a, int b,int c){
	if((a>0)&&(a<24)&&(b>0)&&(b<60)&&(c>0)&&(c<60)){
	   chas=a;
	   min=b;
	   sec=c;
	}
	else {
		cout << "Error .. dannie vvedeni nepravilno"<< endl;
	}
}
Ну да конечно, особенно в этом фрагменте всего хватает
Механические ошибки - самые опасные для нервов ошибки

Вообще у вас IDE наверно просто плохая, мне вот QtCreator сам фигурные скобки ставит, а в случае чего - подсвечивает( это в принципе во всех редакторах должно быть ).
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 17.10.2011 в 19:10.
Ivan_32 вне форума Ответить с цитированием
Старый 17.10.2011, 19:28   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
time g[100];
g[l]::timeprint1();
g[l]::timeprint2();
Для доступа к методам через объект класса надо использовать точку:
Код:
g[l].timeprint1();
g[l].timeprint2();
Цитата:
g[i]::time(a,b,c);
Ну и конструкторы так не вызываются, тем более, что массив объектов класса уже статически создан.
An1ka вне форума Ответить с цитированием
Старый 17.10.2011, 20:19   #6
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
Код:
time::time(int a, int b,int c){
	if((a>0)&&(a<24)&&(b>0)&&(b<60)&&(c>0)&&(c<60)){
	   chas=a;
	   min=b;
	   sec=c;
	}
	else {
		cout << "Error .. dannie vvedeni nepravilno"<< endl;
	}
}
Ну да конечно, особенно в этом фрагменте всего хватает
Механические ошибки - самые опасные для нервов ошибки

Вообще у вас IDE наверно просто плохая, мне вот QtCreator сам фигурные скобки ставит, а в случае чего - подсвечивает( это в принципе во всех редакторах должно быть ).
Ну а зачем в else скобки если там всего 1 оператор ?
У меня visual studio 2010

Цитата:
Сообщение от An1ka Посмотреть сообщение
Для доступа к методам через объект класса надо использовать точку:
Код:
g[l].timeprint1();
g[l].timeprint2();
Ну и конструкторы так не вызываются, тем более, что массив объектов класса уже статически создан.
Да, точно - вот тут я и напутал
Переделал, всё работает, всем спасибо
Jugger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вектор из callback'ов методов класса Gongled Общие вопросы C/C++ 7 05.01.2011 16:29
вынос методов класса в дин библиотеки(dll) Пепел Феникса Общие вопросы C/C++ 8 07.12.2010 20:55
массив методов класса DartDayring Общие вопросы C/C++ 0 07.12.2010 20:00
Описание класса. frem-dag Общие вопросы C/C++ 4 11.01.2010 19:53
Использование методов вне класса prikolist Общие вопросы C/C++ 12 07.05.2009 13:57