这是有问题的代码。它在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:错误:在此上下文中。