big c++ 项目中的结构和组织问题

Problem with structure and organization in big c++ project

我开始了我的第一个大型 C++ 项目,在该项目中我将程序的功能划分到不同的文件中。我 运行 在库相互包含并且存在一些声明问题的情况下。

像这样的东西:

在apha.h

#pagma once
#include "betha.h"

struct alpha
{
    int data;
    betha bb;
};

int fun1(apha a);

在betha.h

#pagma once
#include "alpha.h"

struct betha
{
    double data;
    double moreData;
};

int fun2(alpha a, betha b);

我在 t运行 中找到了一个解决方案,将所有结构放在一个单独的文件 struct.h 中,它工作正常。 但我想知道是否有办法在各自的库中拥有该结构 因为它更有意义并且更容易使用。

对于初学者来说,header 名称中似乎有两个拼写错误

apha.h

应该是

alpha.h

并在此声明中

int fun1(apha a);

你的意思好像是

int fun1(alpha a);

在编译单元中包含 header apha.h 后,您实际上拥有

struct betha
{
    double data;
    double moreData;
};

int fun2(alpha a, betha b);

struct alpha
{
    int data;
    betha bb;
};

int fun1(apha a);

如你所见,函数func2引用了名称alpha

int fun2(alpha a, betha b);

尚未申报。

您可以使用前向声明

struct betha
{
    double data;
    double moreData;
};

struct alpha;

int fun2(alpha a, betha b);

或函数声明中详细的类型说明符

struct betha
{
    double data;
    double moreData;
};

int fun2( struct alpha a, betha b);