若设计一个结构体三个类,和一堆宏定义以及一堆常量以及一堆全局函数:
#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類上。
這就是使用前置聲明,但是只能使用指標或引用,因為編譯器編譯的時候必須明確成員的大小,而指標和引用的大小是確定的。
就好像設計房子和床,房子都還沒設計好買床擺哪裡?大小尺寸未知,但是可以使用指針。