【发布时间】:2017-05-23 11:01:28
【问题描述】:
我有一个函数可以将向量的元素转换为用逗号分隔的字符串。我希望这个函数适用于 int、float 或 double 等数值,所以我让这个函数接收模板向量:
template <typename T>
std::string ConvertToString(std::vector<T> elements)
{
std::stringstream stream;
for(int i = 0; i < elements.size()-1; i++)
{
stream << elements[i];
stream << ",";
}
stream <<elements[elements.size()-1];
return stream.str();
}
然后我声明并填充一个向量:
std::vector<int> values;
values.push_back(1);
values.push_back(2);
values.push_back(3);
并尝试调用函数:
std::string convertedString = ConvertToString(values);
现在在调用上述函数行时,我收到以下错误:
错误 C2664:“ConvertToString”:无法将参数 1 从“std::vector<_ty>”转换为“std::vector<_ty>”
我不明白为什么我会收到这个错误,因为提到的类型是相同的。有人能解释一下我哪里错了吗?我怎样才能使函数调用起作用?
非常感谢!
编辑:
我正在使用 Visual Studio 2012。
我的完整代码是这样的:
#include<string>
#include<iostream>
#include<sstream>
#include<vector>
std::string ConvertToString(std::vector<std::string> strings);
int __cdecl main(int argc, char **argv)
{
std::vector<int> values;
values.push_back(1);
values.push_back(2);
values.push_back(3);
values.push_back(4);
values.push_back(5);
std::string convertedValues = ConvertToString(values); //here the error occurs
return 0;
}
template <typename T>
std::string ConvertToString(const std::vector<T> elements)
{
std::stringstream stream;
for(int i = 0; i < elements.size()-1; i++)
{
stream << elements[i];
stream << ",";
}
stream <<elements[elements.size()-1];
return stream.str();
}
【问题讨论】:
-
Can't reproduce 与您发布的内容(至少使用 g++)...您可能需要展示更多内容(并告诉我们您使用的是哪个版本的 VS)。
-
无法用 VS2015、VS2013 和 VS2005 重现
-
@Holt 我已经更新了整个代码,我不知道我还有什么问题。
-
@Danh 谢谢你的信息,我已经添加了完整的代码示例,你现在可以再试一次吗?
-
这段代码编译出错