我在我的代码中写了以下三元条件:
auto shift =
(auto diff1 = setPositions.back() - setPositions.front()) ==
(auto diff2 = posM - posN) ?
diff1 :
diff1 > diff2 ?
diff2 - (diff1 - diff2) :
diff1 + (diff2 - diff1);
上面的代码出现在构造函数定义中。课堂声明如下:
typedef int32_t THIRTY_TWO_BIT_INT;
class setBits{
public:
setBits(THIRTY_TWO_BIT_INT, THIRTY_TWO_BIT_INT,
unsigned short, unsigned short
);
~setBits();
private:
THIRTY_TWO_BIT_INT valA;
THIRTY_TWO_BIT_INT valB;
unsigned short posN;
unsigned short posM;
THIRTY_TWO_BIT_INT result;
vector<int>setPositions;
void calcSetPositions(THIRTY_TWO_BIT_INT&);
THIRTY_TWO_BIT_INT bm;
void calcBitMask();
void remRedSetBits(THIRTY_TWO_BIT_INT&);
};
对于上面的三元条件代码,我得到以下编译错误:
1 In file included from main.cpp:1:
2 ./code.hpp:42:15: error: expected ')'
3 (auto diff1 = setPositions.back() - setPositions.front()) ==
4 ^
5 ./code.hpp:42:9: note: to match this '('
6 (auto diff1 = setPositions.back() - setPositions.front()) ==
7 ^
有人可以指出这个错误的原因吗?
答案 0 :(得分:0)
您无法在auto diff1 = setPositions.back() - setPositions.front();
auto diff2 = posM - posN;
auto shift =
(diff1 == diff2) ?
diff1 :
(diff1 > diff2) ?
diff2 - (diff1 - diff2) :
diff1 + (diff2 - diff1);
运算符内声明新变量。您必须将代码分解为多个语句,例如:
messageSource