Construtor de cópia não é reconhecido...
Olá, galera.
Eu fiz o código a seguir pra testar uma coisa, mas acabei esbarrando num problema que eu não entendo por que existe...
Eu defini meu construtor de cópia (recebe uma referência) e passo uma instância da classe para esse construtor. Só que o compilador não reconhece que deve usar esse construtor...
O código é o seguinte:
#include <iostream>
using namespace std;
class A {
public:
int* b;
public:
A();
16. A(A&);
~A();
A& operator =(A&);
A copy();
};
A::A() { b = new int; }
A::A(A& a) { b = new int; b = a.b; }
A::~A() { delete b; }
A& A::operator =(A& a) { delete b; b = new int; b = a.b; return *this; }
A A::copy() { A b(*this); return b; }
int main() {
A a;
A b;
26. A c(a);
A d = b.copy();
b = a;
cout << *a.b << ' '<<*b.b<<' '<<*c.b<<' '<<*d.b<<endl;
return 0;
}A saída do compilador foi:
teste.cpp: In function 'int main()':
teste.cpp:26: error: no matching function for call to 'A::A(A)'
teste.cpp:16: note: candidates are: A::A(A&)
Alguém tem alguma idéia do que seja? Ou alguma explicação?
Falou http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Discussão (4)
Carregando comentários...