我想保留兩個類在一個文件中,我希望其中一個具有另一個內部的實例。所以在我的頭文件我有這樣的事情:C++一個文件幾個類
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
很明顯,編譯器說,它不知道什麼項目。如何使它看到Item類?
我想保留兩個類在一個文件中,我希望其中一個具有另一個內部的實例。所以在我的頭文件我有這樣的事情:C++一個文件幾個類
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
很明顯,編譯器說,它不知道什麼項目。如何使它看到Item類?
只是移動項目在類Box
之上的類定義。現在Box可以看到完整的Item類型,並且可以成爲Box的成員。
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
你可以通過轉發在你的代碼開始加入聲明所需類:
class Box;
class Item;
當心編譯器應該知道一個類的每個數據成員的大小。您可能要重新排序你的類定義的保證,或者使用指針,等等
您可能需要使用原始指針,引用,智能指針,...
試試這個:
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
這不會在這種情況下工作,正是因爲你提到的原因,:編譯器需要知道成員的大小。 – piokuc
「請注意,編譯器應該知道類的每個數據成員的大小。」如果對於類型T這是不可能的,你應該使用T的指針和引用來繞過這個問題。 – user2485710
@ user2485710嗯,我寧願將類聲明分成兩個文件,而不是通過使用指針「繞過問題」。 – piokuc