Проблема с шаблонами функций - PullRequest
0 голосов
/ 30 декабря 2011

Я пишу шаблонную функцию, которая может принимать параметры, скажем, X или Y или Z. Они определены следующим образом:

typedef MyClassA< string > X;
typedef MyClassA< float > Y;

Но сам класс A является шаблоном, определение которого следующее:

template< class T>
class MyClass
{

}

Какой должна быть моя подпись функции в этом случае?
Я попробовал простой func(T a), но это не удалось.

Ответы [ 3 ]

1 голос
/ 30 декабря 2011

это обычный синтаксис для шаблонных классов:

template <typename T>
class My
{
 public:
 void func(T c);
};

template <typename T>
void My<T>::func(T a)
{
 std::cout << "test\n";
}

int main()
{
  My<int> m;

  m.func(42);
}

, и вы должны попробовать это для шаблонных функций:

template <class T>
T func(T q) {
 return (++q);
}

int res = func<int>(42);
1 голос
/ 30 декабря 2011

не уверен, что это то, что вы ищете:

template< class T>
class MyClass
{

};
typedef MyClass< int > X;
typedef MyClass< float > Y;

template<class T>
void func(MyClass<T> a) {
}
0 голосов
/ 30 декабря 2011

Вы имеете в виду функцию, которая будет принимать любую специализацию шаблона вашего класса в качестве аргумента?Это также должен быть шаблон:

template <typename T> void func(MyClassA<T>); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...