У меня есть класс под названием Movie со следующими частными членами данных:C++ вектор объектов класса
private:
string title_ ;
string director_ ;
Movie_Rating rating_ ;
unsigned int year_ ;
string url_ ;
vector<string> actor_;
Он также содержит следующий конструктор копирования:
Movie::Movie(Movie& myMovie)
{
title_ = myMovie.title_;
director_ = myMovie.director_;
rating_ = myMovie.rating_;
year_ = myMovie.year_;
url_ = myMovie.url_;
actor_ = myMovie.actor_;
}
Когда я пытаюсь создать вектор из этого класса,
vector<Movie> myMovies;
, а затем принимать все данные от пользователя в темп Movie
объект (myMovie1
), а затем использовать оттеснить:
myMovies.push_back(myMovie1);
Я получаю следующее сообщение об ошибке:
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\vector(1233) : error C2558: class 'Movie' : no copy constructor available or copy constructor is declared 'explicit'
Где я буду неправильно? Кажется, он хочет конструктор копирования, но у меня есть один определенный.
идиоматических конструктор копирования подписи 'Movie :: Movie (Const Movie & myMovie)' ... вы бы лучше поставить "S" в 'actor_', есть некоторые из них ... вам лучше оставить компилятор автоматически сгенерировать конструктор копирования, поскольку там нет никакой специальной логики. –