views:

65

answers:

3

hi,
i am very new to c++. i am getting system crash (not compilation error) in doing following:

i am declaring global pointer of class.

BGiftConfigFile  *bgiftConfig;
class BGiftConfigFile : public EftBarclaysGiftConfig { }

in this class i am reading tags from xml file. it is crashing system when this pointer is used to retrieve value. i am doing coding for verifone terminal.

int referenceSetting = bgiftConfig->getreferencesetting(); //system error

getreferencesetting() is member fuction of class EftBarclaysGiftConfig

i am confused about behavior of pointer in this case. i know i am doing something wrong but couldn't rectify it.

When i declare one object of class locally it retrieves the value properly.

BGiftConfigFile  bgiftConfig1; 
int referenceSetting = bgiftConfig1.getreferencesetting(); //working

But if i declare this object global it also crashes the system.

i need to fetch values at different location in my code so i forced to use someting global.

please suggest me how to rectify this problem.

+1  A: 

Your local is a stack allocated instance.

Your global is a pointer and needs to be allocated via a call to new before you start using it:

bgiftConfig = new BGiftConfigFile();
sean e
Globals have static storage duration and are zero-initialized already.
Roger Pate
yep - removed..
sean e
A: 

Firstly forward declare the class BGiftConfigFile and then declare your pointer to object of the class as follows

class BGiftConfigFile
 BGiftConfigFile  *bgiftConfig;
class BGiftConfigFile : public EftBarclaysGiftConfig { };

Then allocate space for your pointer object using new operator

bgiftConfig = new BGiftConfigFile(); // depends upon what constructors you have defined in your class

After you are done with your pointer delete it appropriated using delete operator

delete bgiftConfig;
rocknroll
More complication than needed in both declaring the global and managing it.
Roger Pate
actully it is not possible to pass object to functions .we are not calling fuctions just returning next event which indirectly calls the fuction
coming out of void
A: 

i need to fetch values at different location in my code so i forced to use someting global.

No, you don't need something global. You can pass your non-global instance of this object to the code that needs it.

MadKeithV