我有以下代码:
struct A {
protected:
A() {}
A* a;
};
struct B : A {
protected:
B() { b.a = &b; }
A b;
};奇怪的是,它不能编译。罪魁祸首是b.a = &b;赋值: GCC和clang都抱怨A()是受保护的,这应该不是问题,因为B继承了A。我进入了标准的哪个黑暗角落?
发布于 2014-09-09 17:45:37
这似乎是C++语言的一个很大的限制。你将如何解决这样的问题:
class Node
{
public:
void Save();
protected:
virtual void SaveState(int type) = 0;
};
class BinaryNode : public Node
{
protected:
Node *left;
Node *right;
virtual void SaveState(int type) override
{
left->SaveState(type);
right->SaveState(type);
}
};在本例中,我不想让方法SaveState在Node层次结构之外可见。只有方法Save应为public。
https://stackoverflow.com/questions/12270941
复制相似问题