小编sdu*_*umi的帖子

使用公共赋值运算符的私有副本ctor时出错

你们其中一个人可以解释为什么下面这段代码不能编译吗?

#include <iostream>

using namespace std;

class Foo
{
public:
  Foo() { cout << "Foo::Foo()" << endl << endl; }
  Foo& operator=(const Foo&) { cout << "Foo::operator=(const Foo&)" << endl << endl; }
private:
  Foo(const Foo& b) { *this = b; cout << "Foo::Foo(const Foo&)" << endl << endl; }
};

int main()
{
  Foo foo;

  foo = Foo();
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误:

$ g++ -o copy_ctor_assign copy_ctor_assign.cc && ./copy_ctor_assign
copy_ctor_assign.cc: In function 'int main()':
copy_ctor_assign.cc:10: error: 'Foo::Foo(const Foo&)' is private
copy_ctor_assign.cc:17: …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor assignment-operator

6
推荐指数
1
解决办法
1170
查看次数