I have a MovieController object with an array of Movie objects. I have a MovieView object that calls 'doAddMovie' on the controller.
When I call 'doAddMovie' in the MovieController's constructor, a movie gets added to the array. But when I call 'doAddMovie' from the MovieView there's a segmentation fault.
Can anyone tell me what I'm doing wrong?
MovieController.h
#ifndef MOVIECONTROLLER_H
#define MOVIECONTROLLER_H
#include "MovieView.h"
#include "Movie.h"
class MovieView;
class MovieController
{
public:
MovieController();
void doAddMovie(string title, int year, string genre);
private:
MovieView* movieView;
Movie** movies;
};
MovieController.cc:
const int MAX_MOVIES = 10;
MovieController::MovieController() {
movies = new Movie*[MAX_MOVIES];
doAddMovie("Star Wars", 1977, "SciFi"); // <<-- this works
}
/* when I call this method from my MovieView object, I get a segmentation fault, pretty
* sure the fault happened on line: movies[i] = new Movie(title, year, genre);
*/
void MovieController::doAddMovie(string title, int year, string genre) {
cout << "doAddMovie; title=" << title << "; year=" << year << "; genre =" << genre;
int i = 0;
while (i < MAX_MOVIES) {
if (movies[i] == NULL) {
movies[i] = new Movie(title, year, genre); <<-- segmentation fault here
break;
}
i = i+1;
}
return;
}
MovieView? Wouldn't it be defined or at least already declared inMovieView.h?