表达式必须具有常量值

expression must have a const value

本文关键字:常量 表达式      更新时间:2023-10-16

我遇到了麻烦,无法修复,有人可以帮助我吗,如果您可以解释错误,请向我解释错误

template<unsigned long x>
struct dis
{
dis() { std::cout << x << std::endl; }
};
unsigned int bina(unsigned long x)
{
return x == 0 ? 0 : x % 10 + 2 * bina(x / 10);
}
int main()
{
unsigned long b;
std::cout << "Give a binary number:";
std::cin >> b;
dis<bina(b)>out; //here's the error
return 0;
}

错误是:expr 必须具有 const 值

b

不是常量表达式,bina(b)所以两者都不是。

您可以更改dis以接受运行时值:

struct dis
{
dis(unsigned long x) { std::cout << x << std::endl; }
};
constexpr unsigned int bina(unsigned long x)
{
return x == 0 ? 0 : x % 10 + 2 * bina(x / 10);
}
int main()
{
unsigned long b;
std::cout << "Give a binary number:";
std::cin >> b;
dis /*out*/(bina(b));
return 0;
}