复制类构造函数C ++

时间:2013-01-19 00:55:13

标签: 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)'

2 个答案:

答案 0 :(得分:5)

Song copied_song(*this);

请记住,this是指针,但复制构造函数采用引用

答案 1 :(得分:2)

试试这个:

Song copied_song(*this);

复制构造函数定义为Song(const Song&),但this是指向Song的指针。因此,您需要取消引用它。

以下这一行对我来说有点困惑:

this->Song(copied_song);

我想这只是另一次尝试调用复制构造函数,不是吗?无论如何,它不会那样工作。使用我的答案顶部的解决方案,或使用:

Song copied_song = *this;