C++中如何从一个类引用public变量(这个变量是另一个类的成员)?

请看我的图,这样写vs2010里面没有报错,但是编译的时候会出现程序错误,已经定位到这里,肯定是这个模块错了,请大家指点指点啊

  KeyboardEvenHandler *cameraSSwitch=new KeyboardEventHandler;//这里调用了无参的构造方法

  那么你的KeyboadrEvenHandler例的public成员tankInputDeviceState是个野指针,而且没有为其分配空间

  当你使用这样一个指针的时候一定会出错

  解决方法

  一、

  修改你的无参构造方法为

 KeyboardEvendler(){tankInputDeviceState=new TankInputDeviceStateType();}

  二、

  使用静态布尔变量。直接可以访问

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-06
要访问类的公有非静态成员,必须通过类的实例。所以你if中的判断是没错的。但是如果要正确访问首先你要确认的是你的类实例必须正确的初始化了才行。你没有贴编译错误的消息,我也不好判断到底是在哪里错误的。
第2个回答  2013-06-06
一个类引用另一个类的共有变量吗,公有继承啊,用派生类的成员函数调用
第3个回答  2013-06-06
1)保护成员,只有类的成员函数以及子类的成员可以自由使用,孙类看继承的权限。
类外部的函数,或者其他类,不能直接使用保护成员,要用函数获取。
2)另外,指针成员,必须初始化才可以自由使用,否则出错。
3) 级联指针,使用时,要确保指针是正确的(类型和是否空指针,野指针)。
4)viewer ???
第4个回答  推荐于2017-12-16
是想在第一个类中调用第二个类的cameraMode的吧?
你的调用代码有误。
应该是 KeyboardWventHander * cameraSwitch = new KeyboardWventHander ();//要有()的

或者直接创建cameraMode所在类的对象,使用这个对象直接调用cameraMode。就不用再调用2次指针了。
如:TankInputDeviceStateType * p = new TankInputDeviceStateType ();
if(p->cameraMode)
{ ...... }本回答被提问者和网友采纳
相似回答