以下是我正在使用的模板功能
// Function to calculate bionomial coefficient.
template <typename TYPE>
int C(TYPE &n, TYPE &k) {
if (!parametersChecking(n, k)) {
return false;
}
else{
return claculateBC(n,k);
}
}
我将两个字符串参数传递给该函数。但它说
错误:无法将参数'1'的'std :: string {aka std :: basic_string}'转换为'int'为'int calculateBC(int,int)'
但如果我传递int
和float
类型参数,则可以正常工作。我已经尝试过stringstream,只有当两个参数都是某些文本时它才有用,但如果一个是文本而另一个是数字,则它不会返回所需的结果。
从另一个函数传递值,即
void test3_string(int testNo) {
std::string n = "john"; std::string k = "doe";
int pass = 0;
// std::stringstream ss(n);
// ss >> tempN;
// std::cout << tempN << std::endl;
// std::stringstream ss2(k);
// ss2 >> tempK;
// std::cout << tempK << std::endl;
pass = C(n, k);
printStatus(pass, testNo-1);
}
所以有人可以帮助我如何将字符串传递给函数?
其他信息:
int claculateBC(int n, int k){
int bionomial_coefficient = 1;
if (n == k || k == 0) {
return 1;
}
int nMinusK = n - k;
n = eachValuesFactorial(n);
k = eachValuesFactorial(k);
nMinusK = eachValuesFactorial(nMinusK);
bionomial_coefficient = n / (k * nMinusK);
return bionomial_coefficient;
}
如果有人想看看,这是完整的程序:Bionomial-Coefficient
答案 0 :(得分:1)
calculateBC()
仅接受int
个值作为输入,并对它们执行算术运算。但是,TYPE
的{{1}}为C()
,而不是std::string
。因此,您需要先将字符串值转换为整数值,然后才能调用int
,例如:
calculateBC()
答案 1 :(得分:0)
您的模板化函数调用calculateBC
,它只接受int
个。您还需要使calculateBC
成为模板函数。它仅适用于float
和int
,因为会发生从float
到int
的隐含转换。
或者,您可以在此处重新考虑您的结构,无论是在ints
内转换为C()
,还是在调用C()
并删除模板之前。