我有一個叫做scene的結構。在名爲場景的結構中,我需要製作其他場景對象的數組。這可能嗎?在結構中創建一個特定結構的數組。
回答
不,因爲在scene
被完全定義之前,編譯器不知道它有多大,也不知道該數組的大小。
但是,你可以有指針到scene
一個數組,因爲指針(不計指針成員和其他古怪 - 感謝納瓦茲)都是一樣的尺寸:
class scene {
scene* array[20];
};
或者,您也可以存儲的指針將指向與new[]
分配並用delete[]
解除分配一個動態數組:
class scene {
scene() : array(new scene[20]) { }
~scene() { delete[] array; }
scene* array;
};
或甚至更可替代地,存儲vector<scene>
,一個scene
的vector
S:
class scene {
vector<scene> array;
};
,並與vector
,你無需手動內存管理可調整大小的數組。
不知道,我剛剛提出了兩個答案,一個以「是」開頭,另一個以「否」開頭。我覺得很蠢,但都是正確的:) –
有人在觸發器上很快。我upvoted。 :) – DejanLekic
@ MichaelKrelin-hacker我剛剛比Nawaz做了一個字面上的「array」字樣:) –
是的。你可以做到這一點。但你到成員聲明爲指針爲:
struct scene
{
//other members
scene *children; //this is what you need.
//you cannot make it like : scene children[100];
};
然後創建動態數組爲:
scene parent;
parent.chidren = new scene[100]; //100 children!
只要記住,你已經分配和釋放內存自己。可以使用std::vector<scene*>
或boost::ptr_vector<scene>
。
確實有可能。
僞代碼:
struct Scene {
int id;
Scene* scenes;
};
PS。你可以輕鬆地測試這個 - 不要太懶。 ;)
如果您使用std::vector
,則可以這樣做。這是我昨天寫的一些代碼:
#include <vector>
struct ChangeList // Tree of changes in a tree of values
{
int index ;
std::vector<ChangeList> Changes ;
} ;
- 1. 瞭解c#結構 - 如何創建一個結構數組?
- 2. 如何創建一個結構數組?
- 3. 創建一個結構數組
- 4. 如何創建一個結構數組
- 5. 創建一個結構數組
- 6. 在另一個結構中固定結構數組?
- 7. 在Javascript中創建數組的結構
- 8. 創建數組結構
- 9. 如何創建結構數組,其中結構的最後一個元素是一個結構破解
- 10. 將char指定給一個struct中的char數組,這些結構在一個結構數組內部的結構數組裏面,這個結構數組裏面有一個結構數組,裏面有一個結構數組,裏面有一個struct array
- 11. 創建2個2結構的數組。
- 12. 在運行時在函數中創建一個結構數組
- 13. 另一個結構的固定大小數組的結構
- 14. 通過函數在結構數組中創建一個列表
- 15. 如何在Yii2中創建一個良好的數組結構?
- 16. 創建創建一個結構的實例數組
- 17. 在C++中在堆上創建一個結構數組
- 18. 創建蘭特結構
- 19. 在IDL中創建一個結構
- 20. 結構數組的結構
- 21. 如何創建一個數組的結構數組
- 22. 創建一個結構數組的數組?
- 23. 在結構中qsort結構數組
- 24. 如何在C中創建一個結構數組?
- 25. 在C中創建一個結構數組?
- 26. 如何在C++中創建一個結構類型數組
- 27. 在C++中創建一個結構數組
- 28. 創建一個結構數組,創建一個數組,大小C
- 29. 在結構體內創建結構體
- 30. 創建一個結構數組,但稍後定義大小?
no ............. –
這樣的類有什麼意義:struct X {X a};'? –
@KerrekSB將X視爲框,其中包含其他框。 – Beginner