需求
今天编译是报错: warning: list-initializer for non-class type must not be parenthesized
, 报错的地方是对类中包含的成员变量是一个数组,然后使用了列表初始化。
解决
其实这个报错提示已经说的很清楚了,对非类使用了列表初始化并且加了括号。所以解决的方法也很简单,这种数组成员变量初始化使用列表初始化时,不要加括号就 ok 了。
class Sn74cbtlv3253 {
//using FuncVoidVoid = void (*)(void);
using FuncVoidBool = void (*)(bool);
public:
enum Index {
kIndex1 = 0, kIndex2, kIndex3, kIndex4,
};
public:
Sn74cbtlv3253(FuncVoidBool s0, FuncVoidBool s1, FuncVoidBool oe) :
s0_(s0), s1_(s1), oe_(oe) {};
void Switch(Index index);
void Disconnect();
private:
FuncVoidBool s0_;
FuncVoidBool s1_;
FuncVoidBool oe_;
};
class Channel {
public:
enum ChannelIndex {
kChannel1 = 0, kChannel2, kChannel3, kChannel4, kChannel5, kChannel6,
kChannel7, kChannel8, kChannel9, kChannel10, kChannel11, kChannel12,
};
public:
Channel();
void Switch(ChannelIndex index);
void Disconnect();
private:
Sn74cbtlv3253 sn74cbtlv3253_[6][2];
};
Channel::Channel() : sn74cbtlv3253_{
{{Chip1S0PinControl, Chip1S1PinControl, Chip1En1PinControl}, {Chip1S0PinControl, Chip1S1PinControl, Chip1En2PinControl}},
{{Chip2S0PinControl, Chip2S1PinControl, Chip2En1PinControl}, {Chip2S0PinControl, Chip2S1PinControl, Chip2En2PinControl}},
{{Chip3S0PinControl, Chip3S1PinControl, Chip3En1PinControl}, {Chip3S0PinControl, Chip3S1PinControl, Chip3En2PinControl}},
{{Chip4S0PinControl, Chip4S1PinControl, Chip4En1PinControl}, {Chip4S0PinControl, Chip4S1PinControl, Chip4En2PinControl}},
{{Chip5S0PinControl, Chip5S1PinControl, Chip5En1PinControl}, {Chip5S0PinControl, Chip5S1PinControl, Chip5En2PinControl}},
{{Chip6S0PinControl, Chip6S1PinControl, Chip6En1PinControl}, {Chip6S0PinControl, Chip6S1PinControl, Chip6En2PinControl}},
}
{
Disconnect();
}
参考
list initializer for non class type must not be parenthesized werror