2015-01-02 38 views
-1

我已經writen這個代碼如何在運行時定義大小的數組?

struct Personalidadbeta{ 
    int A, B, C, D, E, F, G, H, I, L, M, N, O, Q1, Q2, Q3, Q4,Extraversion; 
}; 

const int Cantidad = personalidadalfa.Extraversion * 24; 

有人做過該變量轉換成一個恆定的,但是當我想創建一個結構與該變量「Cantidad」這讓和錯誤女巫告訴用戶變量數組不是一個常數,它必須運行;

void crearPersonalidadBeta(){ 


    Personalidadbeta personalidadbeta[Cantidad]; 

} 

我該如何做這樣的結構數組?

+0

你可以用「vector」來代替嗎? – doctorlove

+8

在編譯時**,您的數組大小的大小必須是常數**。否則,你必須使用一個動態數組(使用'new')或者只使用'vector',這也是我推薦的其他原因。 – CoryKramer

回答

3

這是X/Y情況,你想做X,最初是因爲你嘗試了Y,因爲它沒有工作,你想知道如何修復Y.

爲了您最初的問題:

vector<Personalidadbeta> personalidadbeta; 
personalidadbeta.resize(Cantidad); 

就可以知道使用personalidadbeta像一個數組(即你可以personalidadbeta[index]等..

http://www.cplusplus.com/reference/vector/vector/

一個做這件事的許多優點這種方式是你不必手動釋放內存

這是另一個SO問題,類似於這樣:

How to define member array size at runtime