powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / пара вопросов по С++
9 сообщений из 9, страница 1 из 1
пара вопросов по С++
    #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
пара вопросов по С++
    #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
пара вопросов по С++
    #34450578
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх.........вопрос 1) как передать экземпляр шаблонного класса в функцию?


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

Код: plaintext
1.
#include <stdlib.h>
void exit(int status);
...
Рейтинг: 0 / 0
пара вопросов по С++
    #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
пара вопросов по С++
    #34451173
эх.........
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как это делается без исп-ия

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

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

А никакю Но дело в том что у тебя они есть это файлы от STL. Без iomanip iostream'ом вообще пользоваться сложно.
Еслии задуматься то и для твоего контейнера можно написать insert_iterator. Только давай завтра
...
Рейтинг: 0 / 0
пара вопросов по С++
    #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
пара вопросов по С++
    #34458423
hiper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
template<typename T>
void func(A<T> *pD){
...
}

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


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