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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 20:52   #1
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию return 1 в void функции !

Всем привет !

Вступление:
Переделываю не ООП в ООП, на языке C++ . Программа элементарная - телефонная книжка.

Создал класс "Записи", в классе 4 функции: 1)читать(читает записи из файла в 2 массива - имена и телефоны), 2) сортировка по телефонным номерам, 3)сортрировка по именам, 4) показать

Код:
class record
{
public:
         void read();
         void sort_n();
         void sort_p();
         void display();
};
void read() - открывает текстовой файл при помощи fstream, а если не может открыть/найти файл выдаёт ошибку и заканчивает программу при помощи return 1; если открывает файл, то считывает содержимое в 2 массива, и закрывает файл.

вот как выглядит проверка файла

Код:
void record::read()
{
	fstream  infile("file.txt");
	if (infile.fail())
    {
        cerr << "can't open file\n";
        return 1;
    }
     // далее ......

}


Когда компилирую программу, выдаёт ошибку что void read() возвращает return 1(текстовой файл, в той же папке где .cpp и .h файлы)

Могу разместить проверку открытия .txt файла в main(), но тогда теряется смысл самого void read();

Что делать?
Спасибо !!!
интеграл вне форума Ответить с цитированием
Старый 17.03.2010, 21:03   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

объявите record::read() как возвращающую int и в основной программе проверяйте значение, которая вернёт эта ф-ция. кстати, вывод сообщения об ошибке лучше тоже перенести в вызывающую ф-цию
netrino вне форума Ответить с цитированием
Старый 17.03.2010, 21:16   #3
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию

тоесть, вы хотите сказать что нужно переписать
int record::read()

Цитата:
Сообщение от netrino Посмотреть сообщение
кстати, вывод сообщения об ошибке лучше тоже перенести в вызывающую ф-цию
вот это не совсем понял, хотите сказать что
Код:
cerr << "can't open file\n";
стоит перенести в main() ??

Спасибо !
интеграл вне форума Ответить с цитированием
Старый 17.03.2010, 21:23   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от интеграл Посмотреть сообщение
вот это не совсем понял, хотите сказать что
Код:
cerr << "can't open file\n";
стоит перенести в main() ??

Спасибо !
Угу ) Желательно, чтобы функция не производила побочных действий, она должна делать только свою работу ) Также не очень хорошо, когда имя файла "забито" в программу, обычно оно вводится с клавиатуры, впрочем, если вам по заданию именно так и нужно, то другое дело )
netrino вне форума Ответить с цитированием
Старый 17.03.2010, 21:32   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
return 1 в void функции !
void ничего не возвращает...
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 17.03.2010, 21:44   #6
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию

Спасибо за что помогли и обьяснили!!
я поступлю так

Код:
int record::read()
{
	fstream  infile("file.txt");
	if (infile.fail())
    {
        return 0;
    }
     // далее считывает данные  ......
     return 1

}
а в main() будет проверка
на возврат 0 будет

Код:
cerr << "can't open file\n";
return 1;
на возврат 1
продолжать программу......

думаю что так сработает
интеграл вне форума Ответить с цитированием
Старый 17.03.2010, 22:00   #7
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию

Слушайте, я так подумал ......а зачем всё это делать !!!!

заменить return 1 на exit(1)
интеграл вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по return fs444 Общие вопросы C/C++ 9 20.03.2010 15:07
return и echo dedyshka PHP 5 31.01.2010 16:58
Загадка void`а Voipp Общие вопросы C/C++ 4 08.09.2009 17:29
Зачем нужен void? Сергей089 Общие вопросы C/C++ 7 23.03.2009 17:08
Static Void Problem RIO Общие вопросы .NET 2 02.05.2008 16:52