考虑以下代码:
class A
{
private:
struct B { private: int i; friend class A; };
public:
static void foo1()
{
B b;
b.i = 0;
}
static void foo2()
{
B b = {0};
}
};
为什么foo1有效但foo2无效?struct initializer 构造函数对 A 类不可见吗?无论如何可以在 C++11 中完成这项工作吗?
(注意,删除 private 会使 foo2 工作。)