У меня есть следующий код C ++, который я пытаюсь получить для компиляции (соответствующие разделы приведены ниже). У меня проблемы с пониманием, что не так с моим синтаксисом.
Я получаю ошибку
C2664: A(const A&) : cannot convert parameter 1 from A *const to const A&
Насколько я понимаю, *b.getA()
должен разыменовать указатель, давая мне фактический объект, который я затем смогу скопировать с помощью конструктора копирования.
class A: {
public:
A(const &A);
A();
};
class B: {
private:
shared_ptr<A> myA;
public:
B() { myA = make_shared<A>(A()); }
shared_ptr<A> getA() { return myA; }
};
main() {
B b; // default constructor of B
A a = *b.getA(); //try invoke copy constructor from A
// Throws error C2664: A(const A&) : cannot convert parameter 1 from A *const to const A&
}
Любая помощь приветствуется.