C++函数返回字符串变量
我有一个生成随机数的函数。问题是我在一个模板类中使用它,其中T可能是int或string。当我选择字符串时,我得到一个关于不可能转换的错误。如何根据模板类型返回整数并将其分配给字符串C++函数返回字符串变量,c++,C++,我有一个生成随机数的函数。问题是我在一个模板类中使用它,其中T可能是int或string。当我选择字符串时,我得到一个关于不可能转换的错误。如何根据模板类型返回整数并将其分配给字符串 CTable(){ for (int i = 0; i < 10; i++){ int row = GenerateNumber(); int col = GenerateNumber(); T value = GenerateNumber(); //p
CTable(){
for (int i = 0; i < 10; i++){
int row = GenerateNumber();
int col = GenerateNumber();
T value = GenerateNumber(); //problem here when T is string
CCellDescr c(row, col, value);
cells.push_back(c);
}
}
int GenerateNumber(){
int number = rand() % 10 + 1;
return number;
}
您可以创建一个助手模板来执行转换,并在T类型上对其进行专门化。例如: 示例代码
您可以创建一个助手模板来执行转换,并在T类型上对其进行专门化。例如: 示例代码
您还可以专门化模板化函数,以不同方式处理字符串
#include <cstdlib>
#include <string>
template<class T>
class CTable
{
public:
CTable();
};
生成数字函数不变
std::string randomStrings[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
template<>
CTable<std::string>::CTable()
{
std::string value = randomStrings[GenerateNumber()];
}
其他所有内容的模板构造函数实现
class foo
{
};
和一个快速类来演示如何使这个解决方案失败
int main()
{
CTable<int> a;
CTable<std::string> b;
CTable<foo> c; // awwww shoot. Need protection from foos too.
}
您还可以专门化模板化函数,以不同方式处理字符串
#include <cstdlib>
#include <string>
template<class T>
class CTable
{
public:
CTable();
};
生成数字函数不变
std::string randomStrings[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
template<>
CTable<std::string>::CTable()
{
std::string value = randomStrings[GenerateNumber()];
}
其他所有内容的模板构造函数实现
class foo
{
};
和一个快速类来演示如何使这个解决方案失败
int main()
{
CTable<int> a;
CTable<std::string> b;
CTable<foo> c; // awwww shoot. Need protection from foos too.
}
还有一个快速的main来尝试这一切。我如何根据类型定义要选择哪一个?我如何根据类型定义要选择哪一个?恶魔。别这么快打字了!恶魔。别这么快打字了!