这可能不是关于 C++ 的特定问题,而更多涉及面向对象编程。我对此很新,并且我对我的设计持怀疑态度。我有一个类 Parser,基本上实现了许多处理解析表达式、从中缀转换为后缀等功能的函数。我在主函数中使用这些 Parser 函数。我意识到我不需要这个类的任何数据成员。因此,我实际上不需要这个类的对象。因此,我最终将类中的每个函数都设置为静态函数。这种设计是否有些奇怪?我应该将其作为接口吗?有什么建议吗?
这可能不是关于 C++ 的特定问题,而更多涉及面向对象编程。我对此很新,并且我对我的设计持怀疑态度。我有一个类 Parser,基本上实现了许多处理解析表达式、从中缀转换为后缀等功能的函数。我在主函数中使用这些 Parser 函数。我意识到我不需要这个类的任何数据成员。因此,我实际上不需要这个类的对象。因此,我最终将类中的每个函数都设置为静态函数。这种设计是否有些奇怪?我应该将其作为接口吗?有什么建议吗?
你需要一个解析器,你知道你想让它为你做什么 - 这实际上就是你的"接口"。
你当前的解析器实现不需要任何成员变量 - 因此,为了实现你的接口,你不需要一个类。因此,请摒弃你的静态方法。像Kevin所说的那样,使用一个命名空间和普通函数(非静态)是一个很好的主意。
如果你觉得你将需要添加一个新的解析器,该解析器将需要维护内部状态,那么你可能希望在(1)中定义一个接口 - 一个普通的公开可见的头文件,其中包含你选择的命名空间中的函数声明就足够了。