若设计一个结构体三个类,和一堆宏定义以及一堆常量以及一堆全局函数:
#define ABC 1
#define DEF 2
int const MIN;
int funa(...);
int funb(...);
struct a;
class x;
class y;
class z;
其中,宏定义、常量、常量函数放在common.h
中;class x
拥有一个成员变量是class y
的实例;class y
拥有一个成员变量是class x
的实例;class z
的大部分成员方法都会用到class x
和class y
;
请问,如果要分成若干个.h
文件和若干个.cpp
文件,该如何写?
这。。除非是用指针,不然不可能
用指针如下:
common.h
common.cpp
classx.h
classx.cpp
classy.h
classy.cpp
classz.h
classz.cpp
main.cpp
common.h
classx.h
classy.h
classz.h
楼主,你是怕循环引用,引起错误么?如果是这样,推荐你看看C++的类前置声明,这足以解决你的问题。
反正是c++,常量应该可以全部变成constexpr啊。
这不是前向声明能解决的。编译器在编译x类的时候需要知道完整的y类的定义,而要知道y类的完整定义就必须先知道x类的定义,编译器会告诉你“我搞不定”的。如果非要这样做,可以使用指针: x类有一个指向y类实例的指针,编译器是知道指针是什么东西的,同理用在y类上。
这个就是使用前置声明,但是只能使用指针或者引用,因为编译器编译的时候必须明确成员的大小,而指针和引用的大小是确定的。
就好象设计房子和床,房子都还没设计好买床摆哪儿?大小尺寸未知,但是可以使用指针。