-2

我正在编写一段代码,允许用户按不同类型(double// stringdate自定义类))进行搜索。这涉及到一个readInSearchCriteria()我试图设置为模板的方法。我已经对模板函数进行了一些研究,这是我目前所拥有的:

//template function to process different datatypes
template <typename T> UserInterface::readInSearchCriteria() const {
    //template instance to hold data input from keyboard
    T t;
    //prompt user to enter a value
    cout << "\n ENTER SEARCH CRITERIA: ";
    //read-in value assigned to template variable
    cin >> t;

    //return initialised template variable
    return t;
}

我在程序中的某个时刻调用了它来处理double这样的:

double amount = theUI_.readInSearchCriteria<double>(); //works absolutely fine

但是,当我尝试在 a 上调​​用它时string,编译器给出了以下错误:

不存在将“int”转换为“std::basic_string, std::allocator>”的合适构造函数

有人可以就这里可能出现的问题向我提供任何建议吗?

4

2 回答 2

4

您的函数声明中有一个错字:您没有指定返回类型,因此编译器默认为int.

您需要添加T为返回类型:

template <typename T>
T UserInterface::readInSearchCriteria() const {
    ...
    return T
}
于 2016-03-25T22:05:14.257 回答
2

该方法readInSearchCriteria没有返回类型。你必须指定一个函数的返回类型,这里它是隐含的int,因为你没有指定一个。

template <typename T> T UserInterface::readInSearchCriteria() const;
于 2016-03-25T22:05:29.170 回答