【发布时间】:2015-08-30 09:45:06
【问题描述】:
所以,我正在为双端队列容器编写一个简单的模板化搜索函数。代码如下:
template <typename T>
void searchInDequeFor(std::deque<T> Deque, T searchValue)
{
for(const auto & element : Deque)
{
if(Deque.empty())
{
std::cout << "Deque is empty, nothing to search for..." << "\n";
}
else if(element==searchValue)
{
std::cout << searchValue << " matches " << element << ", an element in the deque" << "\n";
}
}
}
而且,这是我在 main 中调用函数的方式:
deque<string> myDeque={"apple", "banana", "pear", "blueberry"};
searchInDequeFor(myDeque,"pear");
这是我得到的错误:
candidate template ignored: deduced conflicting types for parameter 'T' ('std::__1::basic_string<char>' vs. 'const char *')
现在,我已经用整数、浮点数、双精度数等测试了这个函数,它在这些类型上运行良好,这意味着我的模板正在工作(对于这些类型)。这让我想知道为什么当函数清楚地知道我传入的是字符串类型而不是 const char * 类型的双端队列时,为什么会出现此错误。任何帮助都会很棒。谢谢!
【问题讨论】:
标签: c++ string templates c++11 char