Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
1

Почему не может быть такой функции?

04.09.2008, 15:54. Просмотров 3456. Ответов 21
Метки нет (Все метки)

ofstream input_file(str1) ; такой строкой кода я открываю файл.

ofstream - тип обекта
input_file - обект типа ofstream

а тепрь я хочу открывать файл в другом месте программы использую функцию, а в место вызова возвращать объект типа ofstream

так почему же не компилируется моя функция?
C++
1
2
3
4
5
6
7
8
9
10
ofstream open_file_eror(CString str1)
{
    ofstream input_file(str1) ;
    if(input_file==NULL) cout<< "~~ERROR~~ input file "<< str1<<"\n";
    {
        cout<< "~~ERROR~~ input file "<< str1<<"\n";
 
    }
    return input_file;
}
ошибки -
c:\documents and settings\я\мои документы\visual studio projects\kooltest\kooltest.cpp(21): error C2556: 'std::ofstream open_file_eror(ATL::CString)' : overloaded function differs only by return type from 'void open_file_eror(ATL::CString)'
c:\documents and settings\я\мои документы\visual studio projects\kooltest\kooltest.cpp(21): error C2371: 'open_file_eror' : redefinition; different basic types
c:\documents and settings\я\мои документы\visual studio projects\kooltest\kooltest.cpp(31): error C2556: 'std::ofstream open_file_eror(ATL::CString)' : overloaded function differs only by return type from 'void open_file_eror(ATL::CString)'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2008, 15:54
Ответы с готовыми решениями:

Может ли быть метод virtual static? И почему?
Очень нужно объяснение! В интернете ничего конкретно про это не написано.

Почему конструктор в отличаи от деструктора не может быть виртуальным?
Вопрос озвучен :). Желательно, с разжёваным ответом. Спасибо

В чем может быть ошибка? (передача аргументов функции)
Есть двумерный массив, симулирующий игровое поле (0 означают пустоту, 8 игрок)...

Как такое может быть? (вызов функции-члена без объекта)
собственно вопрос озвучен. #include &lt;iostream&gt; using namespace std; ...

Почему тип входящего параметра функции может отличаться от типа возвращаемого значения?
Зачем здесь указываеться другой тип данных: double &amp;change_it(int i); ...

21
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
04.09.2008, 20:12 21
Если объект локальный,при выходе из функции запускается деструктор,в случае с потоками я не знаю,что конкретно делает деструктор,но,никто не гарантирует,что работа с его копией будет возможна. Делай как Vourhey говорит.
0
Vourhey
Почетный модератор
6492 / 2266 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
04.09.2008, 20:39 22
О, я еще поспешу развеять твои сомнения по поводу ползености такого кода, как у тебя, и по поводу того, что ты говоришь "выношу значения вне функции". Скомпилируй это:
Код
using namespace std;
class a
{
public:
	int j;
	a(int u)
	{
		j = u;
	}
	a(const a &)
	{
		j = 666;
	}
};

a open_file_error()
{
	a i(10);
	cout<<i.j<<endl;
	return i;
}

void main()
{
	a i = open_file_error();
	cout<<i.j<<endl;
	cin.get();
}
где же та десятка, что была внутри? Куда делась? Что, теперь виднее стала едеологическая неправильность такого подхода? XuTPbIu_MuHTAu прав. Ты не можешь быть уверен, что тебе вернулось то, что было.
Делай через указатели. Тем более, в твоем случае конструктора копирования просто нет. Поэтому и ошибка.
0
04.09.2008, 20:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2008, 20:39

Может ли быть такое?
поставил счетчик для сравнений в пирамидальной сортировке массива выдает 34732...

В чём может быть ошибка?
Описать функцию Power4(x,a,ξ) вещественного типа (параметры х, а, ξ -...

Память не может быть прочитана!
Проблема возникает при копировании одного массива в другой. Я вроди просмотрел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru