[Flightgear-devel] Object scope help
Hi, I am trying to develop a radar module which consists of two 'texture' classes that are overlaid. The classes are instantiated within instrument_manager: } else if ( name == taradar ) { set_subsystem( id, new TaRadar( node ), 1 ); } else if ( name == taecho ) { set_subsystem( id, new TaEcho( node ), 1 ); and the objects perform as i would expect within flightgear. next, I wish to call a method (TaRadar::getAngle) from within TaEcho, so to do this, I assume that i do something like: TaRadar* _taradar_node = (TaRadar*) globals-get_subsystem( taradar); cout angle: _taradar_node-getAngle endl; OR (neither work) FGInstrumentMgr *imgr = (FGInstrumentMgr *) globals-get_subsystem(instrumentation); _taradar_node = (TaRadar *) imgr-get_subsystem(taradar); cout angle: _taradar_node-getAngle endl; Now then, if TaRadar::getAngle() has the following fixed code: return 10; everything works ok, but if the method returns an object variable: return _angle; I get a segmentation fault. I assume this to be because the private variable (_angle) has not been initialised, however, i even tried setting the value to a fixed value within the constructor and it still does not work. constructor: TaRadar::TaRadar(SGPropertyNode *node) { cout TaRadar initialise endl; _angle=5; //(declared in .hxx as float _angle;) } Does anybody know why this variable is appearing to be not initialised? am i calling the wrong function to return a pointer to this object? Thanks for any help -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel
Re: [Flightgear-devel] Object scope help
On 11.10.2011 23:31, Robbo wrote: TaRadar* _taradar_node = (TaRadar*) globals-get_subsystem( taradar); Now then, if TaRadar::getAngle() has the following fixed code: return 10; everything works ok, but if the method returns an object variable: return _angle; I get a segmentation fault. That means _taradar_node is NULL. Calling _taradar_node-getAngle() is illegal if _taradar_node=0. However, if the method you're calling doesn't access the object itself, but just returns a constant (return 10), then nothing happens (lucky!). Add a check if (_taradar_node!=0) ... and see why the pointer is NULL. cheers, Thorsten -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct ___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel
Re: [Flightgear-devel] Object scope help
On Tue, Oct 11, 2011 at 11:31 PM, Robbo robbo_b...@hotmail.com wrote: The classes are instantiated within instrument_manager: } else if ( name == taradar ) { set_subsystem( id, new TaRadar( node ), 1 ); Notice that the subsystem will be registered using the id not the name. So make sure you are using the correct value when retrieving it, below: TaRadar* _taradar_node = (TaRadar*) globals-get_subsystem(taradar); -- Csaba/Jester -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct ___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel
Re: [Flightgear-devel] Object scope help
Thorsten, Thanks for your prompt reply. I get that the pointer is NULL, but I do not understand why! I believe that I have called the correct method to return a pointer to the object. And since I know that the object has been instantiated (since i get a cout message to tell me and also i can see the object doing what its supposed to be doing on screen). Do you have any idea why this object may be null? have i correctly registered the instrument? does the instrument not persist until program completion? How do I correctly obtain a pointer to this object if this is not the correct way? Thanks Robbo Date: Tue, 11 Oct 2011 23:42:42 +0200 From: bre...@gmail.com To: flightgear-devel@lists.sourceforge.net Subject: Re: [Flightgear-devel] Object scope help On 11.10.2011 23:31, Robbo wrote: TaRadar* _taradar_node = (TaRadar*) globals-get_subsystem( taradar); Now then, if TaRadar::getAngle() has the following fixed code: return 10; everything works ok, but if the method returns an object variable: return _angle; I get a segmentation fault. That means _taradar_node is NULL. Calling _taradar_node-getAngle() is illegal if _taradar_node=0. However, if the method you're calling doesn't access the object itself, but just returns a constant (return 10), then nothing happens (lucky!). Add a check if (_taradar_node!=0) ... and see why the pointer is NULL. cheers, Thorsten -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct ___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel
Re: [Flightgear-devel] Object scope help
Csaba, Thanks, that makes complete sense, I did not spot that the id may be how it is registered. However, I have checked what value comes back from id and it is 'instrument-1-taradar', so i changed my call to: globals-get_subsystem(instrument-1-taradar); but this is still returning NULL! i print out some useful info from my code: log: set_subsystem: taecho: instrument-0-taecho log: TaEcho constructor called log: set_subsystem: taradar: instrument-1-taradar log: TaRadar constructor called log: TaRadar isnull = YES Any other ideas why this is NULL? Cheers Robbo 2011/10/11 Csaba Halász csaba.hal...@gmail.com On Tue, Oct 11, 2011 at 11:31 PM, Robbo robbo_b...@hotmail.com wrote: The classes are instantiated within instrument_manager: } else if ( name == taradar ) { set_subsystem( id, new TaRadar( node ), 1 ); Notice that the subsystem will be registered using the id not the name. So make sure you are using the correct value when retrieving it, below: TaRadar* _taradar_node = (TaRadar*) globals-get_subsystem(taradar); -- Csaba/Jester -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct ___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel -- All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2d-oct___ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel