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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2012, 11:53   #1
artemoning
Пользователь
 
Регистрация: 20.09.2012
Сообщений: 23
По умолчанию Перегрузка оператора ifstream >> для класса

Нужно перегрузить оператор >> для класса, передав в параметрах поток ifstream. Пробовал, вот код:

Код:
struct stud
{
	string name;
	string sename;
	int course;
	string stud_card;
	int sex;
	int home;
}
class student
{
private:
	stud data[10];
	int k;
public:
	student();
	~student();
	.....
	ifstream& operator>>(ifstream& in);
	.....
};
Код:
ifstream& student::operator>>(ifstream& in)
{
	in>>k;
	for(int i=0; i<k; i++)
	{
		in>>data[i].name;
		in>>data[i].sename;
		in>>data[i].sex;
		in>>data[i].course;
		in>>data[i].stud_card;
		in>>data[i].home;
	}
	return in;
}
что сделал не правильно, ибо в main подчеркивает и пишет "Отсутствует оператор ">>" соответсвующий этим операндам"

Код main:
Код:
void main()
{
	int k;
	bool exit=false;
	ifstream in("Base.txt");
	ofstream out("Base.txt");
	student obj();
	obj>>in;
        .......
}
artemoning вне форума Ответить с цитированием
Старый 03.10.2012, 17:15   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Перегружайте френдом.
p51x вне форума Ответить с цитированием
Старый 04.10.2012, 00:57   #3
artemoning
Пользователь
 
Регистрация: 20.09.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Перегружайте френдом.
френдом тоже пробовал. не пашет...
вот полностю код програмы
http://narod.ru/disk/61977246001.7fd.../prog.rar.html
помогите, очень нужно!
artemoning вне форума Ответить с цитированием
Старый 04.10.2012, 14:38   #4
artemoning
Пользователь
 
Регистрация: 20.09.2012
Сообщений: 23
По умолчанию

Все. С проблемой разобрался! Но я разочаровался в С++... Френд функция для перегрузки оператора >> не пахала... в класе удалил перед перегрузкой слово френд и заново его написал... и все пошло как по маслу
к тому же я не мог создать объект таким способом student obj();, а таким все нормально student obj;

может обьясните почему такая фигня творится?
artemoning вне форума Ответить с цитированием
Старый 04.10.2012, 16:02   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

student obj; это создание объекта типа student конструктором без аргументов. student obj(); это объявление функции obj без аргументов, возвращающей тип student. В итоге эта функция была первым аргументом оператора >>, на что и ругался компилятор.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 05.10.2012, 22:11   #6
artemoning
Пользователь
 
Регистрация: 20.09.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
student obj; это создание объекта типа student конструктором без аргументов. student obj(); это объявление функции obj без аргументов, возвращающей тип student. В итоге эта функция была первым аргументом оператора >>, на что и ругался компилятор.
Спасибо за ответ. Но почему у меня были проблемы и глюки френда?
artemoning вне форума Ответить с цитированием
Старый 05.10.2012, 22:38   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
френдом тоже пробовал. не пашет...
Цитата:
Но почему у меня были проблемы и глюки френда?
Покажите код, разберемся.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с переопределением оператора << для своего класса DKOI Общие вопросы C/C++ 1 16.11.2010 00:40
Перегрузка операций для класса дробей Fataller Общие вопросы C/C++ 4 29.05.2010 18:08
Переопределение оператора умножения для класса. Умножение числа на класс. capta1n Общие вопросы C/C++ 2 06.03.2010 16:50
С++ перегрузка операций для шаблонного класса TIN Помощь студентам 7 29.03.2009 15:24
Перегрузка оператора Crucian Общие вопросы C/C++ 2 22.10.2007 09:44