Ответы пользователя по тегу ООП
  • Member with constructor not allowed in anonymous aggregate?

    xorknown
    @xorknown
    Будут проблемы - решайте
    1)
    #define GLFW
    #ifdef GLFW
    
    class GLFW : public IWindowSystem 
    -> class : public IWindowSystem {}


    Вы определяете пустой макрос с именем GLFW, потом создаете класс с таким же названием. Чего вы этим добиваетесь?

    2) Сигнатуры методов IWindowSystem и GLFW отлючаются
    virtual IWindow *createFullScreenWindow(char **title) = 0;
    -> virtual IWindow *createFullScreenWindow(const char *title) {}
    Ответ написан
    2 комментария
  • Обьявление и Определение Шаблона метода?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Если не вдаваться в подробности компиляции, то можно, но есть свои ограничения. Если вы хотите запихнуть реализацию шаблона в cpp файл, то вам надо инстанцировать его после реализации, чтобы компилятор мог использовать ее в других файлах(в который вы включили хэдер с объявлением). Если хотите перенести реализацию в другой хэдер, то вам необходимо включать его во всех cpp файлах где вы хотите его использовать.

    Просто чтобы задуматься. Каждый cpp файл компилируется отдельно от других, и пусть файл с реализацией скомпилируется первым. Как он узнает, для каких шаблонных параметров его надо инстанцировать, если он даже еще не работал с другими файлами? Таким образом когда дойдет до файла в котором вы используете этот шаблон, то нужной вам реализации скорее всего не будет. Поэтому надо вместе с объявлением указывать для каких параметров будет использоваться шаблон. В среднем это не удобно, поэтому так не делают и пишут шаблоны в хэдерах.
    Ответ написан
    Комментировать