我覺得這是一個非常有吸引力的編程風格定義一個結構/類的所有方法直接內嵌在結構,如只定義結構是這樣的:類方法聯定義
"A.hpp"
class A;
"A.cpp"
class A
{
A() = default;
void method() { }
};
而不是
"A.hpp"
class A
{
A();
void method();
};
"A.cpp"
A::A() = default;
void A::method() { }
這意味着將類/結構定義放在代碼文件中,並且只在頭文件中包含聲明。
但是,當編譯器需要知道其他代碼文件中的struct/class佈局時,會遇到這些問題。
是否有支持這種編程風格?也許只能通過獲得者/設置者來獲取和設置字段?然而,這種方式會導致大量的樣板。
只要在頭文件中包含struct/class定義,就會導致相互遞歸的頭文件出現問題,除非明確地將聲明置於另一個頭文件中。
我可以通過模塊系統以D語言實現這種編程風格,但是如何在C++中實現它?
要使用一個類時,編譯器需要知道它含有(以確定其大小)哪些變量,哪些成員函數它(這樣它可以生成符號鏈接)。因此,類定義必須始終在任何實際使用該類的文件中可見(即,除了聲明指針或引用它之外,幾乎沒有其他任何文件)。雖然你的想法是一個有效的選擇(儘管可能會減慢編譯速度和/或使類的定義看起來很亂),但如果將類的定義放在源文件中,則會出錯。 –
C++編譯模型使得你正在嘗試做的事情變得不可能。 – SergeyA
我投票結束這個問題作爲題外話,因爲它是不可能做OP的願望。 – SergeyA