我在寻找某种抽象数据类型的方法时发现了这个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
}
答案 0 :(得分:1)
template <class OutputType, class InputType>
void InputCheck(const OutputType &x, InputType &y) {
cout << x;
cin >> y;
}
同时注意InputType &y
:y
需要作为引用传递,以便在函数外部看到它的修改。
x
作为const &
传递,因为如果OutputType
很大(结构,字符串或向量等),则通过引用传递会更快。 const
确保不会修改它。