我对c ++很新。我在执行以下操作时遇到系统崩溃(而不是编译错误):
我正在声明类的全局指针。
BGiftConfigFile *bgiftConfig;
class BGiftConfigFile : public EftBarclaysGiftConfig { }
在这个类中我正在读取XML文件中的标签。当此指针用于检索值时,它是崩溃系统。我正在为verifone终端编码。
int referenceSetting = bgiftConfig->getreferencesetting(); //system error
getreferencesetting()是类 EftBarclaysGiftConfig的成员函数
在这种情况下,我对指针的行为感到困惑。我知道我做错了但却无法纠正。
当我在本地声明一个类的对象时,它会正确地检索该值。
BGiftConfigFile bgiftConfig1;
int referenceSetting = bgiftConfig1.getreferencesetting(); //working
但如果我将此对象声明为全局,它也会使系统崩溃。
我需要在代码中的不同位置获取值,因此我不得不使用全局的东西。
如何纠正这个问题?
答案 0 :(得分:1)
您的本地是堆栈分配的实例。
您的global是一个指针,需要在开始使用之前通过调用new来分配:
bgiftConfig = new BGiftConfigFile();
答案 1 :(得分:1)
首先向前声明类BGiftConfigFile,然后声明指向类对象的指针,如下所示
class BGiftConfigFile
BGiftConfigFile *bgiftConfig;
class BGiftConfigFile : public EftBarclaysGiftConfig { };
然后使用new运算符
为指针对象分配空间bgiftConfig = new BGiftConfigFile(); // depends upon what constructors you have defined in your class
完成指针删除后,使用删除操作符
进行删除delete bgiftConfig;
答案 2 :(得分:1)
我需要在我的代码中的不同位置获取值,所以我不得不使用某些全局。
不,你不需要全球性的东西。您可以将此对象的非全局实例传递给需要它的代码。