2011-03-18 57 views
1

我有一個動態的結構數組。當我說動態時,我的意思是元素的數量可以隨着程序的運行而變化。在嘗試將實例變量作爲數組使用之後,我一直有不兼容的類型問題。還有其他方法嗎?C++實例變量/指向堆中數組的指針

我有這樣的結構:

struct movie 
    { 
    int rank; 
    string title; 
    string distributor; 
    string weekend; 
    string total; 
} ; 

我有這個類的頭文件:

class ReadFile{ 

public: 
    ifstream moviesFile; 
    movie movies[]; 

    ReadFile(string); 
    movie handleLine(string); 
    string getString(vector<char>); 

}; 

這是我正在試圖實例化電影實例變量:

//Some code 
movie temparray[linecount]; 
//temparray is filled with various movie structures. 
movies = temparray; 

這是當我得到我的錯誤。我將如何完成實例化我的電影數組的任務。謝謝!

+0

格式化問題而不是使用HTML標記時,選擇代碼並按CTRL + K使其格式正確。 – Naveen 2011-03-18 07:06:59

+0

'ReadFile'作爲(非函子)類的名稱聽起來有點可疑。精心設計的類通常代表名詞,而不是動詞。 – 2011-03-18 07:18:57

回答

4

數組是不可修改的左值,所以你不能分配給他們

所以movies = temparray;是非法

在C++中,始終建議您使用std::vector而不是C風格的數組

//.... 
public: 
    ifstream moviesFile; 
    std::vector<movie> movies; 

//.... 

//Some code 
movie temparray[linecount]; 
movies.assign(temparray, temparray+linecount); 
+0

哈哈,這很有道理!我試圖讓事情更復雜,然後他們應該!非常感謝! – Justin 2011-03-18 19:24:31

+0

對於這種情況,是的,'std :: vector'可能會更好,但它不是C類型數組的推薦。 – 2015-06-07 03:52:00

1

您無法在C++中定義未知大小的數組,請使用std::vector<movie> movies;來創建動態數組。