5

我写了一个代码(c++,visual studio 2010),它有一个向量,即使我声明了 copy const,但仍然显示没有声明 copy const

这里的代码

#include<iostream>
#include<vector>

using namespace std;

class A
{
public:
    A() { cout << "Default A is acting" << endl ; }
    A(A &a) { cout << "Copy Constructor of A is acting" << endl ; }
};

int main()
{
    A a;
    A b=a;
    vector<A> nothing;
    nothing.push_back(a);

    int n;
    cin >> n;
}

我得到的错误是

错误 1 ​​错误 C2558:类“A”:没有可用的复制构造函数或复制构造函数被声明为“显式”c:\program files\microsoft visual studio 10.0\vc\include\xmemory 48 1 delete

任何人请帮助我

4

2 回答 2

17

复制构造函数应该将对象作为 const 引用,所以它应该是:

A(const A &a){ cout << "Copy Constructor of A is acting" << endl; }
于 2010-05-28T16:13:02.740 回答
5

认为复制构造函数采用const ref

尝试

A(const A &a) { cout << "Copy Constructor of A is acting" << endl ; } 

希望有帮助

于 2010-05-28T16:17:45.790 回答