面向对象的编程:在GUI中启动对象

时间:2012-09-24 18:02:34

标签: c++ qt oop user-interface

我是基于面向对象编程的新手,所以这是个愚蠢的问题:

我创建了一个名为 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文件概述如下:

algorithmObject.h

#include <iostream>
#include <fstream>

class algorithmObject 
{

public:

algorithmObject (void);
~algorithmObject (void);

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

algorithmObject.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文件的任何其他函数访问它,这对我来说非常重要......

1 个答案:

答案 0 :(得分:1)

您需要在algorithmObject.h中包含gui.h,因此当编译器看到尝试使用algorithmObject的代码时,已经看到了{{1}的声明} class。

可能通过在尝试使用之前在源文件中始终包含algorithmObject来避免这种情况,因此您需要:< / p>

algorithmObject.h

虽然这在很长一段时间内很多C都是相当标准的做法,但我(个人)认为它相当容易出错并且很脆弱,所以我一般更喜欢如果标题取决于其他标题,它包含它们本身,因此在将其包含在源文件中时没有先决条件。