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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 04:30   #1
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
Восклицание c++ перегрузка потокового ввода/вывода.

Здравствуйте уважаемые форумчанины!
В классе Dates есть перегрузки методов ввода и вывода:
Код:
friend ostream& operator << (ostream&, Dates&);
friend istream& operator >> (istream&, Dates&);
В main подключаю, необходимые библиотеки и пытаюсь написать следующее:
Код:
   Dates *date;
   date=new Dates();
   cin>>date;
В последней строчке выдается ошибка:
"бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)"
Подскажите мне пожалуйста, в чем я ошиблась((((
Заранее спасибо...........
tanek вне форума Ответить с цитированием
Старый 07.12.2011, 05:23   #2
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:
  cin >> *date;
  
  cout << *date;

Последний раз редактировалось viron; 07.12.2011 в 05:26.
viron вне форума Ответить с цитированием
Старый 07.12.2011, 05:52   #3
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Спасибо viron...
Но вот возникла новая проблема....
При вводе данных, у меня вылетает ошибка: "Нарушение прав доступа при записи" вот тут:
Код:
istream& operator>>(istream& stream, Dates& in)
{
	char *str="";
	long strCount=31;
	while (true)
	{
		cout<<"Введите дату в формате: dd mm yy"<<endl;
	    stream.getline(str, strCount);//здесь ошибка
		cout<<"Введите разделяющий формат"<<endl;
		stream.getline(in.format, strCount);
		if (in.DateChecker(str, strCount)==0)
			break;
	}
	return stream;
}
Не мог бы мне помочь исправить ее!?
tanek вне форума Ответить с цитированием
Старый 07.12.2011, 09:13   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а у вас выделена память под 31 символ то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.12.2011, 12:35   #5
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

это был чисто эксперемент..... даже если я выделяю память для 31 символа, и ввожу 1 символ, то программа все равно падает
tanek вне форума Ответить с цитированием
Старый 07.12.2011, 19:53   #6
viron
Форумчанин
 
Аватар для viron
 
Регистрация: 02.12.2011
Сообщений: 110
По умолчанию

Код:
	long strCount = 31;
	char *str = new char[strCount]; // Число символов в строке не больше 30

	...

	delete [] str;	// освобождение памяти
viron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора ввода Anubys Общие вопросы C/C++ 3 07.11.2011 23:08
Классы потокового ввода-вывода и робота с файлами DARK_DESTROYER Общие вопросы C/C++ 2 13.10.2011 20:36
Перегрузка ввода ruPy Помощь студентам 0 22.01.2011 17:54
переопределение ввода и вывода в С++ blackbanny Помощь студентам 12 03.05.2010 13:08
Перегрузка ввода MaTBeu Общие вопросы C/C++ 9 23.12.2007 16:22