Правильный рабочий процесс ООП в C ++ - PullRequest
0 голосов
/ 10 февраля 2019

Я хотел бы создать родительский класс, который содержит основной рабочий процесс других дочерних классов, с вызовами методов дочернего класса.

В частности, я хотел бы создать общий класс чтения файлов, который открывает файл вконструктор и анализирует его, затем закрывает его в деструкторе (в 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 'с тем же открытым файлом, файлом синтаксического анализа, структурой файла close ...

В C ++ это совсем не так, как вызов функции конструктора родительского класса внутри дочернего элемента.класс будет использовать только методы родительского класса, как обсуждалось в этом вопросе Вызов виртуальных функций внутри конструкторов .

Следовательно, как правильно подходить к этой проблеме в рамках парадигмы ООП в C ++?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...