【问题标题】:c++ STL vector is not acccepting the copy constructorc++ STL向量不接受复制构造函数
【发布时间】:2010-05-28 16:09:10
【问题描述】:

我编写了一个包含向量的代码(c++,visual studio 2010),即使我声明了 copy const,但仍然显示未声明 copy 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

请大家帮帮我

【问题讨论】:

  • 请返回并接受您之前一些问题的答案,否则人们可能不愿意回答这个问题。
  • 怎么做,其实我不知道我是新手
  • 返回您提出的问题,然后单击最佳答案旁边的复选标记 ✔。
  • 请注意,就像 Neil Butterworth 所说,复制构造函数 可以 被编写为采用非常量引用。但是对于标准容器,您的复制构造函数应该使用 const 引用作为参数类型

标签: c++ stl copy-constructor


【解决方案1】:

复制构造函数应该将对象作为常量引用,所以应该是:

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

【讨论】:

    【解决方案2】:

    认为复制构造函数采用 const ref's

    试试

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

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2020-07-28
      • 2017-06-11
      • 2013-04-03
      • 2011-01-10
      相关资源
      最近更新 更多