2016-12-22 2 views
-1

Таким образом, я просто хочу, чтобы сделать этот fucntion:Вывести значение шаблона

template<typename T> 
void printWithEndl(T) 
{ 
    std::cout << T << "\n"; 
} 

, но я получил эту ошибку на линии:

std::cout << T << "\n"; 

Я wounder как я могу COUT значение T.

Заранее спасибо.

+2

Вы забыли указать имя переменной. Одного типа недостаточно. – NathanOliver

+0

Вы можете сделать 'typeid (T) .name()', но это не обязательно даст вам что-нибудь полезное. –

+0

Я думаю, он хочет напечатать тип, используемый в этом экземпляре шаблона. «int», «char» или все, что было использовано для создания экземпляра. Не уверен, если это возможно в стандартном C++. – Desaroll

ответ

6

Вы должны назвать переменную вы проходящее в printWithEndl и cout это имя:

template<typename T> 
void printWithEndl(T t) 
{ 
    std::cout << t << "\n"; 
} 

Если вы используете это для печати сложных объектов, вы, вероятно, лучше passing a reference to const:

template<typename T> 
void printWithEndl(const T& t) 
{ 
    std::cout << t << "\n"; 
} 
+1

Различная переменная и имена типов по делу считаются плохой практикой программирования. –

+0

@ThomasMatthews, на что из ответа OP вы ссылаетесь? –

+1

В вашем ответе у вас есть тип данных 'T' и переменная' t'. Одно из них должно быть другим именем. –

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