вектор STL c ++ не принимает конструктор копирования - PullRequest
5 голосов
/ 28 мая 2010

Я написал код (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»: конструктор копирования недоступен или конструктор копирования объявлен «явным» c: \ program files \ microsoft visual studio 10.0 \ vc \ include \ xmemory 48 1 delete

Кто-нибудь, пожалуйста, помогите мне

Ответы [ 2 ]

17 голосов
/ 28 мая 2010

Конструктор копирования должен принимать объект как постоянную ссылку, поэтому он должен быть:

A(const A &a){ cout << "Copy Constructor of A is acting" << endl; }
5 голосов
/ 28 мая 2010

Думаю, конструкторы копирования принимают const ref's

попробуй

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

Надеюсь, что поможет

...