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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 17:38   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Все тот же студент и известным все списком

создаю файл:
ofstream f1(Name.c_str());
к нему создаю объект - список L.
чтобы через все функции не тащить f1;
хочу в списке создать поле типа ofstream:
ofstream ofst;
L.ofst=f1; - ошибкамана.
P.S Могу всю прогу скинуть если легче будет по ней
pinkiller вне форума
Старый 05.01.2012, 17:50   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Да, было бы неплохо, потому что хз, как ты создаешь свой список и как присваиваешь значения.
MaTBeu вне форума
Старый 05.01.2012, 17:57   #3
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;


template <typename Type>
class Box{
	public: Type T;
			Box<Type>* Next;
			Box(){T=0; Next=NULL;}
			Box(int t){T=t; Next=NULL;}
			friend istream& operator>>(istream &ist, Box<Type> &Y){ist>>Y.T; return ist; };
			friend ostream& operator<<(ostream &ost, Box<Type> &Y){ost<<Y.T; return ost; };
};

template <class Class> 
class List{

public: 
	Box<Class>* Begin;
	ofstream ofst;   // !!!! Объявление в классе список !!!! 
	List(){Begin=0;};
	void Show(){cout<<"Show must go on...";};
	void Sort(){};

	void Download(Box<Class>BOX[], int &BCounter){
		cout<<"What is the next item in the list?: ";
		cin>>BOX[BCounter];
		if(Begin!=0){BOX[BCounter].Next=Begin;}
		Begin=&BOX[BCounter];
		if ((BCounter+1)==11){Refresh(); BCounter=0;} //если массив элементов переполнен. все элементы записать в файл и писать следующие элементы поверх старых.
		else {BCounter=BCounter+1;}

	};

	void Remove(){};
	void Refresh(){
		for (;;){
		}
	};
} ;


void END(){};


int SwitchType(){
cout<<"With what type you whant to work? 1 - int	2 - char\n";
	int p;
	p=getch()-'0';
	switch (p)  { 

                 case 1: return 1;
					 break;
				 case 2: return 2;
					 break;
				 default: cout<<"!!!Wrong!!!\n";
					 return SwitchType();
					 break;
	}};


void Create();

template<typename T>
void SwitchInstruction(List<T>&L, Box<T>BOX[], int &BCounter){
int n;
cout<<"1 - Create   2 - Show   3 - Sort   4 - Download   5 - Remove   6 - Refresh 7 - END\n";
n=getch()-'0';
	switch (n)  { 
                 case 1:  Create();
					 break;
				 case 2:  L.Show();
					 break;
				 case 3:  L.Sort();
					 break;
				 case 4:  L.Download(BOX, BCounter);
					 break;
				 case 5:  L.Remove();
					 break;
				 case 6:  L.Refresh();
					 break;
				 case 7:  END();
					 break;
				  default:
					  cout<<"!!!Wrong!!!\n";
					  SwitchInstruction(L, BOX, BCounter);
				};
};




void WorkWithFILE(ofstream &ofst){
int st=SwitchType();
if (st==1){
		cout<<"int...\n";
		Box<int>* BOX = new Box<int>[10];
		int BiCounter=0; // количество уже задействованных элементов массива
		List<int> Li;
		Li.ofst=ofst;   //!!!! Ошибка !!!!
		while (1) {SwitchInstruction(Li, BOX, BiCounter);}
		  }
if (st==2){
		cout<<"char...\n";
		Box<char>* BOX = new Box<char>[10];
		int BcCounter=0; // количество уже задействованных элементов массива
		List<char> Lc;
		Lc.ofst=ofst;  //!!!! Ошибка !!!!
		while (1) {SwitchInstruction(Lc, BOX, BcCounter);}
		  }

};



void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	Name+='.';
	Name+='d';
	Name+='a';
	Name+='t';
	ofstream f1(Name.c_str());
	cout<<"\nYou create file: "<<Name<<"\n";
	WorkWithFILE(f1);
	};
Вложения
Тип файла: rar FuckingKurs.rar (551.8 Кб, 5 просмотров)

Последний раз редактировалось MaTBeu; 05.01.2012 в 18:01.
pinkiller вне форума
Старый 05.01.2012, 18:22   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

В объявлении класса заменить
Код:
ofstream ofst;
на
Код:
ofstream *ofst;
В функциях заменить
Код:
Li.ofst = ofst;
на
Код:
Li.ofst = &ofst;
Все дело в том, что оператор присваивания у классов-наследников base_ios (ofstream в том числе) находится в private секции, поэтому ссылки на объекты потоков скопировать нельзя. Можно скопировать указатели.

Когда будешь использовать этот объект в классе, пиши
Код:
(*ofst) << value;
И отформатируй код, а то это ужас просто.
MaTBeu вне форума
Старый 05.01.2012, 18:29   #5
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Я не знаю как форматировать) ><
Честно говорю=((
что надо сделать примерно?
pinkiller вне форума
Старый 05.01.2012, 18:34   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем вообще в классе член ofst?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 05.01.2012, 18:40   #7
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Зачем в классе ofstream решать ТС. Вопрос был в том, что объект не копируется. Давайте отвечать на вопросы, а не советовать как лучше. ТС не дурак и сам разберется.

2pinkiller
Не включай дурочку, форматировать он не умеет.

Тема закрыта.
MaTBeu вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все тот же char Godod Общие вопросы C/C++ 8 01.06.2010 14:33
все тот же с++ Александе еть я Общие вопросы C/C++ 0 27.04.2010 22:29
все тот же паскаль werus Помощь студентам 2 20.04.2009 15:26
Все тот же Pascal dinozavr Помощь студентам 6 19.04.2009 21:03