我工作的一个项目中某一功能的行为需要几个值之间切换:如何使用traits来访问编译时const值?
class James{
public:
James(){
if(a==0){
//do this
}else{
// do that
}
}
};
目前,“A”是在运行时配置文件读取。但是,实际上,'a'可以在编译时确定,而不是运行时间。我想有一个特质类
struct TraitZero{
constexpr int a = 0;
};
struct TraitOne{
constexpr int a = 1;
};
然后把詹姆斯变成一个模板类
template<typename Trait>
class James{
constexpr int a = Trait::a;
public:
James(){
if(a=0){
//do this
}else{
// do that
}
}
};
我不知道我在哪里弄错了,但这并不编译。
我想知道这里有没有人曾经遇到这样的问题。谁能分享一些见解?
'A = 0'应该是'一个== 0' – Barry
您是不是要找一个== 0? –
在你的结构中''constexpr int a''是否需要是'static'?小心分享编译错误? – qxz