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

我有这个结构:

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;

这是我收到错误消息的时间。我将如何完成实例化我的电影数组的任务。谢谢!

最佳答案

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

所以movies = temparray;是非法的

在C++中,始终建议您使用std::vector代替C样式数组

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

//....

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

关于c++ - C++实例变量/指向堆中数组的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5348999/

10-11 15:55