c ++ STL向量不接受复制构造函数

时间:2010-05-28 16:09:10

标签: c++ stl copy-constructor

我写了一个代码(c ++,visual studio 2010),它有一个向量,即使我虽然声明了复制const,但仍然显示未声明复制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':没有可用的复制构造函数或复制构造函数被声明为'explicit'c:\ program files \ microsoft visual studio 10.0 \ vc \ include \ xmemory 48 1 delete

有人请帮帮我

2 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:5)

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

尝试

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

希望有所帮助