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);
我开始了我的第一个大型 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);