2011-12-30 5 views
-2

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

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

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

template< class T> 
class MyClass 
{ 

} 

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

+2

Пожалуйста, разместите фактический код, который вы пробовали, и сообщения об ошибках компилятора. – Mat

+1

Вы пробовали func (MyClass a) ??? – Vapire

ответ

1

не уверен, если это то, что вы после:

template< class T> 
class MyClass 
{ 

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

template<class T> 
void func(MyClass<T> a) { 
} 
1

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

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

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

template <typename T> void func(MyClassA<T>); 
Смежные вопросы