Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перегруженные функции

1.8K
02 августа 2007 года
igor_nf
256 / / 13.12.2006
Доброго времени суток всем!

Объясните пожалуйста, как декларировать перегруженные функции. Недавно столкнулся с такой проблемой: необходимо реализовать функцию, пишущую в файл данные различных типов...
Вот так выглядят прототипы моих функций:

int put_stream(int value, const char* filename);
int put_stream(const char* stream, const char* filename);
...ну и т.д.

При трансляции в месте обьявления второй функции:
putstream.cpp: error: a function definition is not allowed here, before '{' token

Страуструп пишет, что необходимо описать функцию, как overload.
Пишу:

overload put_stream;

В ответ получаю: putstream.cpp: error: 'overload' does not name a type.
Пишу на Linux'е. Версия gcc - 4.1.2.
Куда копать?
240
02 августа 2007 года
aks
2.5K / / 14.07.2006
Для С++ код который ты привел абсолютно нормальный и без проблем компиляется на gcc. Тоесть или ошибка у тебя гдето еще за пределами приведенного кода, или может ты пишешь (ну и всмысле компиляешь) на самом деле на С, а не на С++. А в С нельзя так перегружать функции. Про overload - это ты чето выдумал. Может текст в оригинале читал, и там пишеться что функции такие overload - тоесть по русски перегруженные )


Цитата: igor_nf

Пишу на Linux'е.


Я то думал на C++ пишешь =))

1.8K
02 августа 2007 года
igor_nf
256 / / 13.12.2006
Сорри, с ошибкой разобрался. Компилял то я правильно, зато в самом неожиданном месте скобку пропустил.
Как можно описать прототип put_stream() для вывода адреса элемента структуры в файл?
240
02 августа 2007 года
aks
2.5K / / 14.07.2006
Да собственно у тебя вобще какая то тогика странная в прграмме.
Прощще определись какие структуры у тебя будут в файле храниться и какой у него формат. И напиши для него метод для записи и для чтения. А уж там в файл все вместе в нужной последовательности записывай.
1.8K
02 августа 2007 года
igor_nf
256 / / 13.12.2006
В смысле создать свой класс, что ли? Я об этом уже думал, но поскольку для C++ я новичок, для меня это будет проблематично. Но буду пытаться. Спасибо!
350
04 августа 2007 года
cheburator
589 / / 01.06.2006
1. Создаем объект ofstream (потоковый вывод в файл, output file stream).
2. Перегружаем функции вывода в поток для каждого типа данных, к примеру,
ofstream &operator << (ofstream &stream, MyStruct my_value)
{
stream << my_value.field1;
stream << my_value.field2;
stream << my_value.field3;
return stream;
}
1.8K
11 августа 2007 года
igor_nf
256 / / 13.12.2006
Короче пробую, что-то вроде слепил. Работает так как мне нужно, т.е. программа корректно записывает в файл различные данные. Но при запуске выдаёт такие грабли:

*** glibc detected ***./fstream: munmap_chunk(): invalid pointer бла бла бла...

Повторюсь ещё раз - программа работает нормально.
Интересно, это я намутил с new и delete, или это проблема glibc?
350
12 августа 2007 года
cheburator
589 / / 01.06.2006
Цитата: cheburator

ofstream &operator << (ofstream &stream, MyStruct my_value)
{
stream << my_value.field1;
stream << my_value.field2;
stream << my_value.field3;
return stream;
}


Я идиот...

 
Код:
stream << my_value.field1 << my_value.field2 << my_value.field3;
12K
13 августа 2007 года
__AleXX__
133 / / 02.04.2007
Интересно в чем-же идиот?
350
14 августа 2007 года
cheburator
589 / / 01.06.2006
Цитата: __AleXX__
Интересно в чем-же идиот?


Можно было короче написать.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог