2010-05-28 48 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