2010-05-28 2 views
4

копию я написал код (C++, Visual Studio 2010), который оказывает вектор, даже я, хотя копию сопзИ объявлен, но по-прежнему показывает, что копия сопзЬ не объявленс STL ++ вектор не acccepting конструктора

Вот код

#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: класс 'А': не конструктор копирования доступны или скопировать конструктор объявлен 'явно' C: \ Program Files \ Microsoft Visual Studio 10.0 \ vc \ includes д \ xmemory 48-удалить

Любой, пожалуйста, помогите мне

+6

Пожалуйста, вернитесь и ответите на некоторые из ваших предыдущих вопросов, или люди не могут ответить на этот вопрос. –

+0

как это сделать, на самом деле я не знаю, что я новичок в SO – prabhakaran

+1

Вернитесь к вопросам, которые вы задали, и нажмите галочку ✔ рядом с лучшим ответом. –

ответ

16

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

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

Спасибо, это работает – prabhakaran

5

Think копировать Конструкторы принимать сопзЬ рефов

попробовать

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

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

+0

@willomitzer Спасибо, это работает – prabhakaran