C++ shared_ptr 复制构造函数语法
我正在尝试编译以下 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&
}
任何帮助表示赞赏。
I have the following C++ code that I'm trying to get to compile (relevant sections follow). I'm having trouble understanding what's wrong with my syntax.
I get the error
C2664: A(const A&) : cannot convert parameter 1 from A *const to const A&
As I understand it, the *b.getA()
should dereference the pointer, giving me the actual object, which I should then be able to copy with the copy constructor.
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&
}
Any help is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的复制构造函数不正确,它应该是
A(const A&)
而不是A(const &A)
。这编译得很好:
Your copy constructor is incorrect, it should be
A(const A&)
notA(const &A)
.This compiles fine:
A(const &A);
是错误的。有两种正确且等效的形式。这些都是A(const &A);
is wrong. There are two correct and equivalent forms. These are