Переменная C ++ экземпляра / указатель на массив в куче - PullRequest
1 голос
/ 18 марта 2011

У меня есть динамический массив структур. Когда я говорю «динамический», я имею в виду, что количество элементов может варьироваться в зависимости от того, когда программа запускается. После проблем с попыткой использования переменной экземпляра в качестве массива у меня возникли проблемы несовместимых типов . Есть ли другие методы?

У меня есть такая структура:

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;

Это когда я получаю свою ошибку. Как бы я выполнил свою задачу по созданию своего массива фильмов? Thankyou!

Ответы [ 2 ]

4 голосов
/ 18 марта 2011

Массивы являются неизменяемыми l-значениями, поэтому вы не можете присвоить им

То есть movies = temparray; незаконно

В C ++ всегда рекомендуется использовать std::vector вместо массивов в стиле C

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

//....

//Some code
 movie temparray[linecount];
 movies.assign(temparray, temparray+linecount);
1 голос
/ 18 марта 2011

Вы не можете определить массивы неизвестного размера в C ++, используйте std::vector<movie> movies; для создания динамического массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...