2011-03-18 68 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;来创建动态数组。