我正在使用ndk在android平台和ios平台上编译c ++代码。这是一个类的功能 标题是:
enum FUNCTIONAL_SWITCH_ID{
FUNCTIONAL_SWITCH_1 = 1,
FUNCTIONAL_SWITCH_2 = 1 << 1,
FUNCTIONAL_SWITCH_3 = 1 <<2,
FUNCTIONAL_SWITCH_MAX = 31,
};
class FunctionalSwitch{
public:
FunctionalSwitch();
virtual ~FunctionalSwitch();
public:
void setFunctionalEnable(bool enable, int functionalID);
bool isFunctionalEnable(int functionalID);
private:
int m_ifunctionalBits;
};
.cpp文件是
#include "FunctionalSwitch.h"
FunctionalSwitch::FunctionalSwitch():m_ifunctionalBits(0){
}
FunctionalSwitch::~FunctionalSwitch(){
}
void FunctionalSwitch::setFunctionalEnable(bool enable, int functionalID){
if (enable) {
m_ifunctionalBits |= functionalID;
}else{
m_ifunctionalBits &= (~functionalID);
}
}
bool FunctionalSwitch::isFunctionalEnable(int functionalID){
return m_ifunctionalBits & functionalID;
}
并将该类用作名为Global
的类中的成员class Global : Base
{
public:
FunctionalSwitch& getFunctionalSwitch(){return m_oFunctionalSwitch;}
private:
FunctionalSwitch m_oFunctionalSwitch;
};
以及我调用函数的某个地方(这是一个例子,我项目中的代码更复杂)
Global a;
a.getFunctionalSwitch().setFunctionalEnable(false, FUNCTIONAL_SWITCH_2);
这里是问题,我给出的bool参数是&#34; false&#34;,但函数得到的是&#34; true&#34;,我添加了一些日志,它是&#34;真&#34;在日志中。 任何想法,以帮助我找出发生了什么。 此代码适用于xcode。但在ndk上有问题