C ++实例变量/指向堆中数组的指针

时间:2011-03-18 07:01:23

标签: c++ arrays instance-variables

我有一个动态的结构数组。当我说动态时,我的意思是每次运行程序时元素的数量都会有所不同。在尝试将实例变量用作数组之后,我一直遇到不兼容的类型问题。还有其他方法吗?

我有这个结构:

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>);

};

这就是我试图实例化 movies 实例变量的方法:

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

这是我收到错误的时候。我将如何完成实例化电影数组的任务。三江源!

2 个答案:

答案 0 :(得分:4)

数组是不可修改的左值,因此您无法分配它们

所以movies = temparray;是非法的

在C ++中,始终建议您使用std::vector代替C风格的数组

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

//....

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

答案 1 :(得分:1)

您无法在C ++中定义未知大小的数组,请使用std::vector<movie> movies;创建动态数组。