开发者

system crash after declaring global object of the class

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 开发者_JAVA技巧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 function 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 something global.

How to rectify this problem?


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;


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();


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜