我工作的一個項目中某一功能的行爲需要幾個值之間切換:如何使用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