为什么我不能在 C++ 中将 args 用作常量表达式
why i cant use args as a constant expression in c++
我有这个简单的代码,我想向这个函数发送两个参数,一个是“i”,另一个是“n”,当尝试切换“i”时等于'n' 我失败了,因为他说 'n' 不是常量表达式,我看了这个问题,想找个方法让 'n' 是常量表达式。
这是函数:
float east_coefficient(int i, int n){
switch(i){
case 1:
return 0;
break;
case n:
return 0;
break;
default:
return 1;
}
}
这是主要功能:
int main(){
int i, x;
const int n = 5;
x = east_coefficient(i, n);
cout << x;
}
函数参数不是常量表达式。 n
和 i
未在您的代码中初始化。您可以使 n
成为模板参数:
#include <iostream>
template <int n>
float east_coefficient(int i){
switch(i){
case 1:
return 0;
break;
case n:
return 0;
break;
default:
return 1;
}
}
int main(){
constexpr int n = 2;
auto x = east_coefficient<n>(42);
std::cout << x;
}
我有这个简单的代码,我想向这个函数发送两个参数,一个是“i”,另一个是“n”,当尝试切换“i”时等于'n' 我失败了,因为他说 'n' 不是常量表达式,我看了这个问题,想找个方法让 'n' 是常量表达式。 这是函数:
float east_coefficient(int i, int n){
switch(i){
case 1:
return 0;
break;
case n:
return 0;
break;
default:
return 1;
}
}
这是主要功能:
int main(){
int i, x;
const int n = 5;
x = east_coefficient(i, n);
cout << x;
}
函数参数不是常量表达式。 n
和 i
未在您的代码中初始化。您可以使 n
成为模板参数:
#include <iostream>
template <int n>
float east_coefficient(int i){
switch(i){
case 1:
return 0;
break;
case n:
return 0;
break;
default:
return 1;
}
}
int main(){
constexpr int n = 2;
auto x = east_coefficient<n>(42);
std::cout << x;
}