我正在寫一個比較std :: strings的模板類函數。 std :: string是模板參數。我的問題是,我不能比較兩個常量字符串與「==」運算符,然後我想我創建兩個非常量臨時字符串變量來執行比較,但它仍然無法編譯。不知道爲什麼。二進制'==':沒有找到運算符類型'std :: string'(或沒有可接受的轉換)的操作符
類VGraph被實例化爲VGraph<std::string, std::string> myGraph;
template <typename V, typename E>
size_t VGraph<V, E>::find(const V& vert)
{
V temp = vert; // (1)
for (size_t i=0; i<graph.size(); i++)
{
V noneConst = graph[i].getVertex(); // (2)
if (temp==noneConst)// I think broblem is here, and tried to fix using (1)(2)
return i;
}
return graph.size();
}
相關函數的原型
template <typename V, typename E>
const V& VVertex<V, E>::getVertex();
您使用的實例化中的V是什麼? – PlasmaHH 2012-03-04 22:33:00
您可以比較兩個常量字符串或兩個常量引用字符串完全正常,您的問題必須在其他地方。 – cooky451 2012-03-04 22:35:07
@CaptainGiraffe:我假設錯誤消息是'binary'==':找不到操作符找到'std :: string'類型的左手操作數(或者沒有可接受的轉換)。否則,這個問題的標題將非常違反直覺。 – ruakh 2012-03-04 22:37:04