g ++调用私有拷贝构造函数而不是构造函数

时间:2014-07-04 08:23:27

标签: c++ compiler-errors g++

这是有问题的代码。它在Visual Studio 2010下编译,但在g ++ 3.4.x和4.1.x下编译失败。我没有立即访问更新的g ++,所以无法检查。

#include <iostream>

struct Color {
  enum Colors {
    red, blue, green, yellow
  };

  Color(Colors c) : col(c) {}

private:
  Colors col;
  Color(const Color& c);                                 // line 12
  Color& operator=(const Color& c);
};

std::ostream& operator << (std::ostream& os, Color const&) { return os; }

int main()
{
  std::cout << Color(Color::red) << std::endl;  // line 20
}

g ++上的错误是:

  

tmp5.cpp:12:错误:“Color(const Color&amp;)”是私有的。   tmp5.cpp:20:错误:在此上下文中。

0 个答案:

没有答案