2016-12-15 2 views
-5

Как использовать шаблон при передаче аргумента в качестве ссылки?Как использовать шаблон в функции при передаче аргументов по ссылке

template <typename T> 

void fun(T &A) 
{ 
     //code here 
} 

int main() 
{ 
     SomeElement A; 
     fun(A); 
     DifferentElement B; 
     fun(B); 
} 

Вот моя ошибка:

error: use of undeclared identifier 'T'

+6

Какой компилятор? Прекрасно подходит для меня с объявлением фиктивной для 'SomeElement' и' DifferentElement' (пробовал с gcc, clang и vC++ на rextester.com) – wasthishelpful

+2

Пожалуйста, отредактируйте свой вопрос, чтобы предоставить [mcve]. –

+0

Я использую Linux –

ответ

2

Вы должны указать значения параметров шаблона, когда вы звоните fun:

SomeElement A; 
fun<SomeElement>(A); 
DifferentElement B; 
fun<DifferentElement>(B); 

Некоторые компиляторы могут вывести их автоматически, но будет давать предупреждения ,

+0

Похоже, что OP находится на старшем компиляторе, который не может автоматически выводить типы. – grisevg

+5

Вывод аргумента шаблона существует, так как до C++ 11 (к счастью) – Rerito

+0

@rerito мой плохой, я смутил его с помощью 'template ' – grisevg

Смежные вопросы