1

我是基于 OO 的编程新手,所以这是一个愚蠢的问题:

我创建了一个名为algorithmObject的类。基本上,它有一堆与之相关的功能。

我创建了一个 QT GUI,我想创建一个 algorithmObject 类型的公共对象,因为我希望能够访问各种 onClick 事件中的成员函数。

所以在我的GUI.h文件中,我有:

public:

algorithmObject Object1;

在我的GUI.cpp文件中,我试图通过以下方式对其进行初始化:

 Object1 = algorithmObject();

我正在使用 MS VS 2010,但出现编译器错误:

错误 C1903:无法从先前的错误中恢复;停止编译错误 C2065:'Object1':未声明的标识符

如果我不包括:

Object1 = algorithmObject();

在我的 GUI.cpp 文件中,只希望 GUI 构造函数为我创建对象,我得到了同样的错误。

我想,我没有以某种方式在 .cpp 文件中正确初始化我的对象。有人可以建议什么是正确的过程吗?

我的 algorithmObject 文件概述如下:

算法对象.h

#include <iostream>
#include <fstream>

class algorithmObject 
{

public:

algorithmObject (void);
~algorithmObject (void);

void function1 (int parameter);
void function2 ();
}

算法对象.cpp

#include "algorithmObject.h"

algorithmObject::algorithmObject(void)
{
}

void algorithmObject::function1(int parameter)
{
//do something
}

void algorithmObject::function2()
{
//do something
}

algorithmObject::~algorithmObject(void)
{
}

但是,如果我不在 GUI.h 文件中包含任何定义,而只是在 GUI 中的单个函数 (algorithmObject Object1;) 中定义我的 algorithmObject,我就能够正确访问我的类的功能。但问题是该对象是该函数的本地对象,我无法从 GUI.cpp 文件的任何其他函数访问它,这对我来说非常重要......

4

1 回答 1

1

您需要包含algorithmObject.hin gui.h,因此当编译器看到尝试使用 an 的代码时algorithmObject,它已经看到了algorithmObject该类的声明。

在您尝试使用它之前,始终包含在源文件中可以避免这种情况,因此您需要:algorithmObject.h

#include "algorithmObject.h"
#include "gui.h"

尽管长期以来这在很多 C 语言中都是相当标准的做法,但我(个人)认为它相当容易出错且脆弱,所以我通常更喜欢如果一个头文件依赖于其他头文件,它本身包含它们,所以有将其包含在源文件中时无需满足任何先决条件。

于 2012-09-24T18:32:16.277 回答