我可以使用具有此语法的模板吗?

时间:2014-01-04 08:03:31

标签: c++ templates

我在寻找某种抽象数据类型的方法时发现了这个StackOverflow question

我想创建一个IO辅助函数,它将一个类(通常是一个字符串)和一个数据类型作为参数。

我也怀疑variable y部分。如果我想要改变y的值,我不知道语法是否正确。

template <class message>
template <typename variable>
void inputCheck(message x, variable y)
{
    cout << x;
    cin >> y;
    // if input y is invalid, call inputCheck again
    // else, keep the input and assign it to y located outside this function
}

1 个答案:

答案 0 :(得分:1)

template <class OutputType, class InputType>
void InputCheck(const OutputType &x, InputType &y) {
  cout << x;
  cin >> y;
}

同时注意InputType &yy需要作为引用传递,以便在函数外部看到它的修改。

x作为const &传递,因为如果OutputType很大(结构,字符串或向量等),则通过引用传递会更快。 const确保不会修改它。