Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / пара вопросов по С++ / 9 сообщений из 9, страница 1 из 1
10.04.2007, 16:40
    #34450563
эх.........
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
вопрос 1) как передать экземпляр шаблонного класса в функцию?
сейчас сделано так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void f();
template <class T> class v {...};

void f()
{
	v<int> integers( 10 );
	cout<<"Input int value"<<endl;
	// работа с членами класса v, например:
	cin>>nInd;
	integers.add(nInd);
	...
}
т.к. предполагается использование нескольких типов, то я хочу сделать так:
v<int> integers(10); написать вообще в отдельной ф-ии, а в f() передавать экземпляр шаблонного класса. только я не знаю как передать экземпляр шаблонного класса...
ну допустим так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void f_()
{
	v<int> integers( 10 );	
	f(&integers);
}

void f(v<T>* p)  // эта ф-ия будет одинаково работать для любого типа
{
	cout<<"Input int value"<<endl;
	// работа с членами класса v, например:
	cin>>nInd;
	p->add(nInd);
	...
}
вопрос 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
void menu()
{
	int key;
	while( 1 )
	{
		system("cls");
		cout<<"Input type"<<endl;
		cout<<"0 - int"<<endl;
		cout<<"1-char"<<endl;
		cout<<"2 - exit"<<endl;// как сделать чтобы при нажатии на 2 был выход из пр-мы???
		cin>>key;
		...
		if (key== 2 ) break;   // короче эта строка не приводит к желаемому рез-ту
	}
}
  
int main()
{
	menu();
	system("PAUSE");
	return  0 ;
}
...
Рейтинг: 0 / 0
10.04.2007, 16:46
    #34450577
Sandro_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
1. Сделать функцию шаблонной
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
template<class T>
void f(v<T>* p)  // эта ф-ия будет одинаково работать для любого типа
{
	cout<<"Input int value"<<endl;
	// работа с членами класса v, например:
	cin>>nInd;
	p->add(nInd);
	...
}

2. Забыл кавычки
Код: plaintext
1.
if (key=='2') break;  
...
Рейтинг: 0 / 0
10.04.2007, 16:46
    #34450578
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
эх.........вопрос 1) как передать экземпляр шаблонного класса в функцию?


Определить шаблон функции
...
Рейтинг: 0 / 0
10.04.2007, 17:32
    #34450753
StepLg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
выход из программы:

Код: plaintext
1.
#include <stdlib.h>
void exit(int status);
...
Рейтинг: 0 / 0
10.04.2007, 17:56
    #34450864
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
Gluk (Kazan) эх.........вопрос 1) как передать экземпляр шаблонного класса в функцию?


Определить шаблон функции
Как всегда максимум позитива. А уменя будет максимум креатива
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
# include <iostream>
# include <iomanip>
# include <vector>
# include <iterator>

using namespace std;

template <class insert_iterator>
void f(insert_iterator iter)
{
  typename insert_iterator::container_type::value_type val;
  cout << "Input values" << endl;
  while((cin >> val)
  {
    *iter = val;
    iter++;
  }
}

int main()
{
  vector<int> vals;
  f(back_inserter(vals));
  copy(vals.begin(), vals.end(), ostream_iterator<int>(cout,", "));
}
...
Рейтинг: 0 / 0
10.04.2007, 20:52
    #34451173
эх.........
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
а как это делается без исп-ия

# include <iomanip>
# include <vector>
# include <iterator>
...
Рейтинг: 0 / 0
10.04.2007, 21:21
    #34451203
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
эх.........а как это делается без исп-ия

# include <iomanip>
# include <vector>
# include <iterator>

А никакю Но дело в том что у тебя они есть это файлы от STL. Без iomanip iostream'ом вообще пользоваться сложно.
Еслии задуматься то и для твоего контейнера можно написать insert_iterator. Только давай завтра
...
Рейтинг: 0 / 0
11.04.2007, 09:03
    #34451656
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
# include <iterator.h>

template <class _Container>
class my_insert_iterator :
        public iterator<output_iterator_tag, void, void, void, void>
{
public:
  typedef _Container container_type;
  explicit my_insert_iterator(container_type& c) : container(&c) {}
  my_insert_iterator& operator=(typename container_type::reference_type x)
  {
    container->add(x);
    return *this;
  }
  my_insert_iterator& operator++()
  {
    return *this;
  }
  my_insert_iterator& operator++(int)
  {
    return *this;  my_insert_iterator& operator*()
  {
    return *this;
  }
private:
  _Container* container;
};

template <class _Container>
inline my_insert_iterator<_Container> my_inserter(_Container& c)
{
  return my_insert_iterator<_Container>(c);
}
Наследоваться от iterator не обязятельно
...
Рейтинг: 0 / 0
13.04.2007, 10:48
    #34458423
hiper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пара вопросов по С++
template<typename T>
void func(A<T> *pD){
...
}

Вроде так.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / пара вопросов по С++ / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]