我有一個叫電影與下面的私有數據成員類:類的C++ Vector對象
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'
我要去哪裏錯了?它似乎想要一個複製構造函數,但我確實有一個定義。
慣用的拷貝構造函數的簽名是'電影::電影(const的電影及爲myMovie)'...你最好放一個 「S」 爲'actor_',有其中幾個...你最好離開編譯器自動生成複製構造函數,因爲那裏沒有任何特殊的邏輯。 – 2010-04-14 18:21:04