我有一个动态的结构数组。当我说动态时,我的意思是每次运行程序时元素的数量都会有所不同。在尝试将实例变量用作数组之后,我一直遇到不兼容的类型问题。还有其他方法吗?
我有这个结构:
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;
这是我收到错误的时候。我将如何完成实例化电影数组的任务。三江源!
答案 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;
创建动态数组。