为什么我不能在 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;
}

函数参数不是常量表达式。 ni 未在您的代码中初始化。您可以使 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;
}