c++ shared_ptr复制构造函数语法
C++ shared_ptr copy constructor syntax
我有下面的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&
}
你的复制构造函数不正确,它应该是A(const A&)
而不是A(const &A)
。
这个编译得很好:
class A {
public:
A(const A&){}
A(){}
};
class B {
private:
shared_ptr<A> myA;
public:
B() { myA = make_shared<A>(); }
shared_ptr<A> getA() { return myA; }
};
main() {
B b; // default constructor of B
A a = *b.getA();
}
A(const &A);
错误。有两种正确的等价形式。这些都是
A(const A & /*name*/);
A(A const & /*name*/);
相关文章:
- 返回语句中的构造函数语法
- 复制构造函数语法错误:myclass 没有成员 mymember
- 在 c++ 中移动 2d 数组的构造函数(语法逻辑不清楚):
- C++类构造函数语法的解释
- C++ 使用指针移动构造函数(*&&&语法)
- 复制构造函数语法并显示构造函数的值
- 基元类型初始化的构造函数语法和赋值语法之间的差异
- 结构构造函数语法
- 构造函数语法两边的括号
- C++复制构造函数语法:对 r/l 值的与号引用
- 奇怪的模板构造函数语法
- c++新手,你能解释一下这个构造函数语法吗?
- c++中很少用到的构造函数语法
- c++ shared_ptr复制构造函数语法
- 模板类构造函数语法
- C++构造函数语法的详细信息
- c++类构造函数语法
- 派生类构造函数语法
- C++引用构造函数语法
- 使用构造函数语法初始化引用