嵌套类的定义和通过文件启动
Nested classes definition and initiation through files
我正在尝试使类函数可以附加到其他类上,例如嵌套类。我对C++还很陌生,所以我可能实际上并没有尝试使用嵌套类,但据我所知,这就是我所处的位置。
现在,我刚刚用Chrome编写了这个,所以它没有真正的用处,但我想保持代码简短。
我正在使用Visual Studio 2015在Windows 7上进行编译。
我在 file_1.h 中有两个类:
#pragma once
#include "file_2.h"
class magic_beans{
public:
magic_beans();
~magic_beans();
int getTotal();
private:
double total[2]; //they have magic fractions
}
class magic_box{
public:
magic_box(); //initiate
~magic_box(); //make sure all objects have been executed
void update();
magic_beans beans; //works fine
magic_apples apples; //does not work
private:
int true_rand; //because it's magic
};
。我在 file_2.h 中有一个类:
#pragma once
#include "file_1.h"
class magic_apples{
public:
magic_apples();
~magic_apples();
int getTotal();
private:
double total[2];
}
现在,我发现我可以简单地更改:
magic_apples apples;
自:
class magic_apples *apples;
在我的构造函数中,我添加:
apples = new magic_apples;
在我的析构函数中,在您问之前:
delete apples;
为什么我必须使用指针引用外部文件中定义的类,而本地定义的类就可以了?
理想情况下,我希望能够以与定义magic_beans相同的方式定义magic_apples。我不反对使用指针,但为了保持我的代码相当统一,我有兴趣找到一种替代的定义方法。
我在 file_1.h 的magic_box课中尝试了一些magic_apples的替代定义,但我无法获得其他任何工作。
你有一个循环依赖,file_1.h
取决于file_2.h
取决于file_1.h
等。 再多的标题包括防护或编译指示都无法解决这个问题。
方法可以解决问题,一种方法是使用前向声明和指针。指针可以解决它,因为使用指针不需要完整的类型。
解决它的另一种方法是打破循环依赖。通过查看您展示的结构,似乎magic_apples
不需要magic_beans
类型,因此您可以通过简单地不包含file_1.h
来打破圆圈。所以file_2.h
应该看起来像
#pragma once
// Note no include file here!
class magic_apples{
public:
magic_apples();
~magic_apples();
int getTotal();
private:
double total[2];
}
相关文章:
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 程序在使用 system() 启动另一个可执行文件时停止
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 无法使用 Visual Studio 启动 DirectX 11 可执行文件,生成工作正常
- 从另一个.cpp文件启动.cpp文件
- 在应用程序启动时读取文件
- 如何使jse文件执行编码.exe并静默添加启动?Javascript将文件添加到启动?
- 如何启动与主子文件夹位于同一子文件夹中的 exe?(C++)
- 如何设置cmakelists.txt文件以启动和运行Xtensor-python示例代码
- 如何在头文件中添加主题树,以便在每次启动 MQTT 时访问它
- 如何从控制台启动可执行文件并使用Qt读取输出
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 文本文件中的匹配行与启动标识符
- 程序在链接提升文件系统时无法启动
- 当该应用程序中加速文件的最后一个修改时间发生更改时,如何重新启动应用程序
- 视觉C++为什么我的文件在重新启动程序时被截断?
- 嵌套类的定义和通过文件启动
- 从“cmd”文件启动的进程创建进程
- C++使用<输入文件和>输出文件启动程序
- 比较文件启动时间