Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 10.01.2012, 12:12   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
Репутация: 33
По умолчанию Потоки.

Извиняюсь, послезавтра сдавать курсач а переделывать оооочень много.

Так что заранее прошу прощения что буду оставлять на форуме много темок.

Код:

template <class Class> 
class List:public fstream{

public: 
	Box<Class>* Begin;
	string Name;
	fstream fst;
	List():fstream(){
		Begin=0;
		cout<<"What file?\nPrint file name: ";
		cin>>Name;
		Name+='.';
		Name+='d';
		Name+='a';
		Name+='t';

		ifstream ifst;
		ifst.open(Name.c_str());
		if (ifst.is_open()){cout<<"File has been\nYou open file: "<<Name<<"\n"; fst.open(Name.c_str(), 
fstream::in | fstream::out | fstream::binary);}
		else {cout<<"Creatin...\nYou creat file: "<<Name<<"\n"; fstream fst(Name.c_str(), 
fstream::in | fstream::out | fstream::binary);}
		ifst.close();
		
	};

Очень проблемно дается работа при наследовании от fstream:

Код:

fstream fst(Name.c_str(), fstream::in | fstream::out | fstream::binary);

Какого то лешего не создает файл.

а
Код:

fst(Name.c_str(), fstream::in | fstream::out | fstream::binary);

выдает ошибку:

Цитата:
error C2064: term does not evaluate to a function taking 2 arguments

Последний раз редактировалось rpy3uH; 12.01.2012 в 10:19.
pinkiller вне форума   Ответить с цитированием
Старый 10.01.2012, 12:37   #2
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
Репутация: 33
По умолчанию

справился:
Код:

public: 
	Class* Begin;
	string Name;
	fstream fst;

	List():fstream(){
		Begin=0;
		cout<<"What file?\nPrint file name: ";
		cin>>Name;
		Name+='.';
		Name+='d';
		Name+='a';
		Name+='t';

		ifstream ifst;
		ifst.open(Name.c_str());
		if (ifst.is_open()){cout<<"File has been\nYou open file: "<<Name<<"\n";}
		else {cout<<"Creatin...\nYou creat file: "<<Name<<"\n"; ofstream ofst(Name.c_str()); ofst.close();}
		fst.open(Name.c_str(), fstream::in | fstream::out | fstream::binary);
		ifst.close();
		
	};

как то хреново fstream работает.
pinkiller вне форума   Ответить с цитированием
Старый 10.01.2012, 12:38   #3
Blade
Software Engineer
Профессионал
 
Аватар для Blade
 
Регистрация: 07.04.2007
Адрес: Москва
Сообщений: 1,619
Репутация: 389

icq: 303547894
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
Код:

fstream fst(Name.c_str(), fstream::in | fstream::out | fstream::binary);

Какого то лешего не создает файл.
Вы уже открыли файл в строке
Код:

ifst.open(Name.c_str());

и снова пытаетесь его открыть
__________________
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума   Ответить с цитированием
Старый 10.01.2012, 13:00   #4
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
Репутация: 33
По умолчанию

Блейд. вот тут вы ошиблись. ifst обьект класса ifstream
он не умет создавать файлы, он пытается его открыть, если такой есть, если файла нет он его не создает и открыть не может.
pinkiller вне форума   Ответить с цитированием
Старый 11.01.2012, 09:14   #5
_Bers
Профессионал
 
Регистрация: 16.12.2011
Адрес: Москва
Сообщений: 1,971
Репутация: 755
По умолчанию

Сколько не приглядывался, так и не смог понять - для чего использовалось наследование? Более того, код юзает композицию. Если убрать наследование - смысл вообще никак не изменится.
_Bers вне форума   Ответить с цитированием
Старый 11.01.2012, 10:03   #6
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,955
Репутация: 3384

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
Блейд. вот тут вы ошиблись. ifst обьект класса ifstream
он не умет создавать файлы, он пытается его открыть, если такой есть, если файла нет он его не создает и открыть не может.
ну потому что нечего читать из файла которого нет.
так что все верно.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 11.01.2012, 11:58   #7
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
Репутация: 33
По умолчанию

Что такое композиция?

P.S Без наследования
fstream fst;
fst.open("Name");
fst.close();

C наследованием.
open("Name");
close();
pinkiller вне форума   Ответить с цитированием
Старый 11.01.2012, 18:59   #8
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,955
Репутация: 3384

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
P.S Без наследования
fstream fst;
fst.open("Name");
fst.close();

C наследованием.
open("Name");
close();
мы то это знаем, но вы почему то тут пишите иное.

http://ru.wikipedia.org/wiki/Компози...ограммирование)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 11.01.2012, 21:15   #9
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
Репутация: 33
По умолчанию

Ну я этого не знал пока освоился с этим наследованием)
pinkiller вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C#] Потоки Lemo C# (си шарп) 2 24.05.2011 21:50
Потоки. FieStik Общие вопросы C/C++ 4 23.05.2011 14:12
Потоки RedScreenOfLife Общие вопросы C/C++ 5 07.03.2011 15:30
потоки Cpluser Общие вопросы .NET 5 15.02.2011 23:17
потоки sergei64_89 Помощь студентам 2 20.10.2010 02:08




10:55.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru