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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2014, 13:46   #1
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию Глобальный объект

Есть класс Array, который обрабатывает массивы по шаблону...т.е тип массива неизвестно. В НЕ классовой функции объявляю свои объекты. Соответственно в других функциях я их использовать не могу. А чтобы создать их глобально, нужно ведь заранее знать параметры объекта, а они узнаются тока по ходу работы программы.
Подскажите как выдернуть созданный массив из обычной функции и использовать его во всей программе?
Код:
void Func1()
{
	int y,y2,y3;
	cout<<"Заполнить массив: Введите 1"<<endl<<"Взять готовый массив из файла: Введите 2"<<endl;
	cin>>y;
	if(y==1){       
					cout<<"ведите размер массива:";cin>>y2;cout<<endl;
					cout<<"Выберите тип массива"<<endl<<"int-1"<<endl<<"float-2"<<endl<<"double-3"<<endl<<"char-4"<<endl;cin>>y3;
					switch(y3)
					{
					    case 1:{  Array<int> M(y2); M.Show();QQQ=&M;break; }//;QQQ.size=M.size; QQQ.mas=new int[QQQ.size]; QQQ=M
						case 2:{  Array<float> M(y2); M.Show(); break; }
						case 3:{  Array<double> M(y2); M.Show();break; }
						case 4:{  Array<char> M(y2); M.Show();break; }
					}
	}

	else if(y==2) { 
					cout<<"Выберите тип файла"<<endl<<"int-1"<<endl<<"float-2"<<endl<<"double-3"<<endl<<"char-4"<<endl;cin>>y3;
					switch(y3)
					{
						case 1:{ strcpy(S,"int"); Array<int> M(2,2); M.Show();break; }
						case 2:{ strcpy(S,"float");  Array<float> M(2,2); M.Show(); break; }
						case 3:{ strcpy(S,"double");  Array<double> M(2,2); M.Show();  break; }
						case 4:{ strcpy(S,"char");  Array<char> M(2,2); M.Show(); break; }
					}
				
	}
system("pause");
};
Drago56 вне форума Ответить с цитированием
Старый 09.06.2014, 14:02   #2
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

можно вынести выбор типа массива из функции. И сделать функцию Func1 шаблонной.
т.е
Код:
template<class T>
T* func1()
{
    Array<T>* arr = new Array<T>();
    ... // some actions
    return arr;
}
либо возвращать значение через умные указатели (см. auto_ptr, shared_ptr), чтобы не заботиться об освобождении памяти извне

Последний раз редактировалось casekey; 09.06.2014 в 14:04.
casekey вне форума Ответить с цитированием
Старый 09.06.2014, 14:17   #3
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы при наведении мышкой на объект, который находится под другим, этот объект выходил на первый план? Zaza7 HTML и CSS 3 17.01.2013 10:23
Глобальный хук AlienNation C# (си шарп) 2 29.07.2012 19:00
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
добавить в объект объект. the_deer_one Общие вопросы C/C++ 7 10.09.2010 12:17
Глобальный хук на мышь не глобальный О_о JTG Общие вопросы Delphi 3 05.06.2008 17:41