KeyboardEvenHandler *cameraSSwitch=new KeyboardEventHandler;//这里调用了无参的构造方法
那么你的KeyboadrEvenHandler例的public成员tankInputDeviceState是个野指针,而且没有为其分配空间
当你使用这样一个指针的时候一定会出错
解决方法
一、
修改你的无参构造方法为
KeyboardEvendler(){tankInputDeviceState=new TankInputDeviceStateType();}
二、
使用静态布尔变量。直接可以访问
要访问类的公有非静态成员,必须通过类的实例。所以你if中的判断是没错的。但是如果要正确访问首先你要确认的是你的类实例必须正确的初始化了才行。你没有贴编译错误的消息,我也不好判断到底是在哪里错误的。
一个类引用另一个类的共有变量吗,公有继承啊,用派生类的成员函数调用
1)保护成员,只有类的成员函数以及子类的成员可以自由使用,孙类看继承的权限。
类外部的函数,或者其他类,不能直接使用保护成员,要用函数获取。
2)另外,指针成员,必须初始化才可以自由使用,否则出错。
3) 级联指针,使用时,要确保指针是正确的(类型和是否空指针,野指针)。
4)viewer ???
是想在第一个类中调用第二个类的cameraMode的吧?
你的调用代码有误。
应该是 KeyboardWventHander * cameraSwitch = new KeyboardWventHander ();//要有()的
或者直接创建cameraMode所在类的对象,使用这个对象直接调用cameraMode。就不用再调用2次指针了。
如:TankInputDeviceStateType * p = new TankInputDeviceStateType ();
if(p->cameraMode)
{ ...... }