2013-01-19 4 views
1

я есть класс песня, которую я хочу, чтобы скопировать ...Copy Class Конструкторы 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

Say 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

Смежные вопросы