在C ++中正确的OOP工作流程

时间:2019-02-10 20:19:12

标签: python c++ oop workflow

我想创建一个包含其他子类的基本工作流程的父类,并调用该子类的方法。

具体地说,我想创建一个通用的文件读取类,该类在构造函数中打开文件并进行解析,然后在析构函数中将其关闭(在C ++中)。我想使其他子类遵循这种结构,但是对于不同的文件类型,它们具有不同的解析方法。但是,我不确定如何在C ++中执行此操作。

来自python背景,我最初认为这样的事情应该可行:

class File(object):
   """
   Generic base class for reading files
   """
   def __init__(self, filename):

       with open(filename, 'r') as f:
           txt = f.read()

       self._parse(txt)

   def _parse(self, txt):
       raise SystemExit("Base file class not for reading files")

# Now I can define many file readers that inherit from File
# and follow the same structure (just changing the parse method). 

class ShaderFile(File):
    """
    Read a glsl shader file 
    """
    def __init__(self, filename):
       File.__init__(self, filename)

    def _parse(self, txt):
       self.parsedTxt = txt

现在可以从原始`File'类中创建任何数量的文件读取类,它们具有相同的打开文件,解析文件,关闭文件结构...

在C ++中,这是完全不同的,因为在子类中调用父类的构造函数只会使用问题Calling virtual functions inside constructors中讨论的父类方法。

因此,在C ++的OOP范式中解决此问题的正确方法是什么?

0 个答案:

没有答案