我已经构建了一个基于类的下推自动机有限状态机。上下文类(其内部状态正在被修改的类)具有一些只有状态才能访问的方法(增加/减少一些迭代器、推送/弹出状态、设置接受状态等)。现在它们是公开的,因为不同的州需要访问它们。
使方法受保护/私有并将状态定义为上下文的朋友会更好吗?
(nb4“基于意见!”)
我已经构建了一个基于类的下推自动机有限状态机。上下文类(其内部状态正在被修改的类)具有一些只有状态才能访问的方法(增加/减少一些迭代器、推送/弹出状态、设置接受状态等)。现在它们是公开的,因为不同的州需要访问它们。
使方法受保护/私有并将状态定义为上下文的朋友会更好吗?
(nb4“基于意见!”)
为一个共同的目的创建一个类的集合是合理的,但是您可能会考虑另一种选择。
举一个非常简短、幼稚的例子:
class outer
{
private:
int a;
int b;
public:
class inner
{ public:
outer * o;
inner( outer * io ) : o( io ) { o->a = 0; }
};
};
int main(int argc, const char * argv[])
{
outer o;
outer::inner i( &o );
return 0;
}
我很快就做到了,所以内部采用指针的构造并不是很好的 C++,所以不要把它当作建议。
关键是即使内部正在访问外部的私有成员,它也会编译。
这是做你所要求的另一种方式。