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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2012, 14:00   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Новогодний студенческий квест v1.5

Код:
void SwitchInstruction(List<typename>&L){
int n;
n=getch()-'0';
	switch (n)  { 

                 case 1:  Create();                /*!!!!!!!!!!! Здесь ошибка. Функция Create описана ниже, и отсюда её не видно. как можно поменять структуру? */
					 break;
				 case 2:  L.Show();
					 break;
				 case 3:  L.Sort();
					 break;
				 case 4:  L.Download();
					 break;
				 case 5:  L.Remove();
					 break;
				 case 6:  L.Refresh();
					 break;
				  default:
					  cout<<"!!!Wrong!!!\n";
					  SwitchInstruction(L);
				};
};




void WorkWithFILE(ofstream &ofst){
int st=SwitchType();
if (st==1){
		List<int>Li;
		SwitchInstruction(Li);
		  }
if (st==2){
		List<char>Lc;
		SwitchInstruction(Lc); //!! вторая ошибка!! опишу после кода!!!
		  }

};



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);
	};

Цитата:
error C2664: 'SwitchInstruction' : cannot convert parameter 1 from 'List<Class>' to 'List<Class> &
Вроде бы все ясно, криво расставил имперсанты, но почему тогда в первом If все работает как надо?
pinkiller вне форума Ответить с цитированием
Старый 04.01.2012, 14:02   #2
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

А еще как выяснилось если тут нажать Ctrl+F5 вместо ентера, сообщение все равно отправиться оО
pinkiller вне форума Ответить с цитированием
Старый 04.01.2012, 14:17   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

прямо так и написано List<Class> в тексте ошибки?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2012, 14:19   #4
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Цитата:
Error 4 error C2664: 'SwitchInstruction' : cannot convert parameter 1 from 'List<Class>' to 'List<Class> &' c:\documents and settings\admin\мои документы\visual studio 2008\projects\fuckingkurs\fuckingku rs\1.h 80 FuckingKurs
вот. скопировал точно все оО
pinkiller вне форума Ответить с цитированием
Старый 04.01.2012, 14:30   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по поводу первого:
опишите предварительно функцию перед SwitchInstructtion.
Код:
void Create();//без тела
по поводу второго, где у SwitchInstruction описание шаблонизации?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 04.01.2012 в 14:32.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2012, 14:41   #6
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;
			Type* Next;
			Box(){T=0; Next=NULL;}
			Box(int t){T=t; Next=NULL;}
			friend ostream& operator<<(ostream &ost, Box<Type> &Y){ost<<Y.T; return ost; };
};

template <class Class> 
class List{

public: 
	int Begin;
	void Show(){cout<<"Show must go on...";};
	void Sort(){};
	void Download(){};
	void Remove(){};
	void Refresh(){};
} ;

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){
int n;
n=getch()-'0';
	switch (n)  { 

                 case 1:  Create();
					 break;
				 case 2:  L.Show();
					 break;
				 case 3:  L.Sort();
					 break;
				 case 4:  L.Download();
					 break;
				 case 5:  L.Remove();
					 break;
				 case 6:  L.Refresh();
					 break;
				  default:
					  cout<<"!!!Wrong!!!\n";
					  SwitchInstruction(L);
				};
};




void WorkWithFILE(ofstream &ofst){
int st=SwitchType();
if (st==1){
		List<int>Li;
		SwitchInstruction(Li);
		  }
if (st==2){
		List<char>Lc;
		SwitchInstruction(Lc);
		  }

};



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);
	};

Так так так? Я все правильно понял?
pinkiller вне форума Ответить с цитированием
Старый 04.01.2012, 15:09   #7
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Да и в таком случае на каждый новый файл будет свой List создаваться?
pinkiller вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новогодний гемморой студента pinkiller Общие вопросы C/C++ 20 04.01.2012 00:01
Новогодний гемморой студента v1.1 pinkiller Общие вопросы C/C++ 4 02.01.2012 23:17
Мой новогодний компьютер meg33 Свободное общение 2 27.12.2007 16:16