-1

我对 C++ 很陌生。我在执行以下操作时遇到系统崩溃(不是编译错误):

我正在声明类的全局指针。

BGiftConfigFile  *bgiftConfig;
class BGiftConfigFile : public EftBarclaysGiftConfig { }

在这堂课中,我正在从 XML 文件中读取标签。当此指针用于检索值时,系统会崩溃。我正在为verifone终端进行编码。

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

getreferencesetting() 是类EftBarclaysGiftConfig的成员函数

在这种情况下,我对指针的行为感到困惑。我知道我做错了什么,但无法纠正。

当我在本地声明一个类对象时,它会正确检索该值。

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

但是,如果我将此对象声明为全局对象,它也会使系统崩溃。

我需要在我的代码中的不同位置获取值,所以我不得不使用全局的东西。

如何纠正这个问题?

4

3 回答 3

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 运算符对其进行删除

delete bgiftConfig;
于 2010-04-16T06:00:22.933 回答
1

您的本地是堆栈分配的实例。

您的 global 是一个指针,需要在开始使用之前通过调用 new 进行分配:

bgiftConfig = new BGiftConfigFile();
于 2010-04-16T05:58:09.083 回答
1

我需要在我的代码中的不同位置获取值,所以我不得不使用全局的东西。

不,你不需要全局的东西。您可以将此对象的非全局实例传递给需要它的代码。

于 2010-04-16T07:42:40.487 回答