enum BAR { /* enum values omitted */ } class Foo{ public: void set(const BAR& bar); private: uint32_t bits; }; void Foo::set(const BAR& bar) { (uint32_t&)bits = bits | bar; }
我不明白Foo :: set中赋值的c风格转换点.你为什么要施放作业的lhs?我疯了,还是有目的?
我现在将重复我的口头禅:如果你的代码包含强制转换,那么代码或设计可能有问题,你应该检查两者以便删除强制转换.