2013-01-19 317 views
1

我有我要复制一个类歌曲...拷贝构造函数类C++

int mtm::Song::getLimitedLength(int maximum_length) { 

     Song copied_song(this); 
    this->Song(copied_song); 
} 

我得到这个错误:

Multiple markers at this line 
- candidates are: 
- no matching function for call to 'mtm::Song::Song(mtm::Song* const)' 

回答

5

Song copied_song(*this);

请记住,this是一个指针,但复制构造函数需要引用

+0

Thankkk你这么much..this工程:) – Christine

+1

@Christine:您可以点击旁边的复选标记接受的答案。 – GManNickG

2

试试这个:

Song copied_song(*this); 

的拷贝构造函数定义Song(const Song&),但this是一个指向歌曲。因此,您需要解除引用。

下面这行有点令人迷惑,对我说:

this->Song(copied_song); 

我想这是唯一的另一个尝试调用拷贝构造函数,不是吗?无论如何,它不会那样工作。使用无论是在我的答案上的解决方案,或使用:

Song copied_song = *this; 
+0

Thankkk你非常非常......这些作品:) – Christine