2010-05-28 6 views
4

j'ai écrit un code (C++, Visual Studio 2010), qui est d'avoir un vecteur, même je copie si const est déclarée, mais montre encore cette copie const n'est pas déclaréC++ vecteur STL n'est pas acccepting le constructeur de copie

Voici le code

#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; 
} 

l'erreur que je suis arrivé est

erreur 1 erreur C2558: classe 'A': pas de constructeur de copie disponible ou constructeur de copie est déclarée c 'explicite': \ program files \ microsoft studio visuel 10.0 \ vc \ include e \ xmemory 48 1 supprimer

Tout le monde s'il vous plaît aidez-moi

+6

Veuillez revenir en arrière et accepter les réponses à certaines de vos questions précédentes, ou les gens peuvent ne pas vouloir répondre à celui-ci. –

+0

comment faire cela, en fait je ne sais pas je suis nouveau à SO – prabhakaran

+1

Retournez aux questions que vous avez posées, et cliquez sur la coche ✔ à côté de la meilleure réponse. –

Répondre

16

constructeur copie doit prendre l'objet comme une référence const, il devrait donc être:

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

Merci, cela fonctionne – prabhakaran

5

Pensez copie constructeurs prennent const ref de

essayer

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

Espérons que cela aide

+0

@willomitzer Merci, cela fonctionne – prabhakaran

Questions connexes