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.
精彩评论