【问题标题】:Print the value of template [closed]打印模板的值[关闭]
【发布时间】:2016-12-22 17:51:29
【问题描述】:

所以,我只想做这个功能:

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

但我就遇到了这个错误:

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

我想知道如何计算 T 的值。

提前致谢。

【问题讨论】:

  • 您忘记为变量命名。光有类型是不够的。
  • 你可以做typeid(T).name(),但它不一定会给你任何有用的东西。
  • 我想他想打印模板实例中使用的类型。 “int”、“char”或任何用于实例化的东西。不确定在标准 C++ 中是否可行。
  • 此外,您还必须为传入的任何类型重载
  • 哦,我不敢相信我犯了这样一个菜鸟错误,感谢您指出这一点。

标签: c++ templates


【解决方案1】:

您应该将要传递给printWithEndl 的变量命名为cout 该名称:

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

如果您使用它来打印复杂的对象,您可能最好使用passing a reference to const

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

【讨论】:

  • 按大小写区分变量和类型名称被认为是一种不好的编程习惯。
  • @ThomasMatthews 你指的是 OP 的回答吗?
  • 在您的答案中,您有一个数据类型T 和一个变量t。其中之一应该是不同的名称。
  • @ThomasMatthews 谢谢!我没有从你之前的评论中发现这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多