Ответы пользователя по тегу C++
  • В чем ошибка std::function?

    vusalg
    @vusalg Автор вопроса
    Студент программист, второй курс
    В классе все работает, но такой вариант мне не подходит, разве что если поля и методы статическими задать, но это не получается

    class t {
    public:
        bool mygl_Init(const char *);
        void mygl_Quit();
        void glClear(GLbitfield mask);
        void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
    private:
        std::function < void (GLbitfield) > _glClear;
        std::function < void (GLclampf, GLclampf, GLclampf, GLclampf) > _glClearColor;
    };


    typedef void ( * PGLCLEARPROC )  (GLbitfield mask);
    typedef void ( * PGLCLEARCOLORPROC )  (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
    
    bool t::mygl_Init(const char *str)
    {
        if (SDL_GL_LoadLibrary(str) < 0)
        {
            return false;
        }
    
        return true;
    }
    
    void t::mygl_Quit()
    {
        SDL_GL_UnloadLibrary();
    }
    
    void t::glClear ( GLbitfield mask)
    {
        if( !_glClear )
            _glClear = (PGLCLEARPROC) SDL_GL_GetProcAddress( "glClear" );
        else
            _glClear (mask);
    }
    void t::glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
    {
        if( !_glClearColor )
            _glClearColor = ( PGLCLEARCOLORPROC ) SDL_GL_GetProcAddress( "glClearColor" );
        else
            _glClearColor (  red,  green,  blue,  alpha );
    }
    Ответ написан
    Комментировать
  • Доступ к полям базового класса?

    vusalg
    @vusalg
    Студент программист, второй курс
    Дружище, попробуй воспользоваться дружественными функциями, мб поможет решить проблему) мне помогло)
    Ответ написан