2010-05-28 72 views
4

我寫了一個代碼(C++,Visual Studio 2010中),這是具有元素,甚至我雖然複製const的聲明,但仍表現出不聲明拷貝常數C++ 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:類 'A':沒有拷貝構造函數可用的或拷貝構造函數聲明爲 '明確的' C:\ Program Files文件\ microsoft visual studio 10.0 \ vc \ includ Ë\ xmemory 48 1刪除

有人請幫我

+6

請回頭接受以前的一些問題的答案,或者人們可能不願意回答這個問題。 – 2010-05-28 16:11:26

+0

如何做到這一點,其實我不知道我是新手SO – prabhakaran 2010-05-28 16:15:01

+1

回到您提出的問題,然後點擊最佳答案旁邊的複選標記✔。 – 2010-05-28 16:17:28

回答

16

拷貝構造函數應該採取的對象作爲一個const引用,所以它應該是:

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

謝謝,它的工作原理 – prabhakaran 2010-05-29 04:07:01

5

想拷貝構造函數採取常量 ref's

試試

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

希望有幫助

+0

@willomitzer 謝謝,它的工作原理 – prabhakaran 2010-05-29 04:09:38