Ошибка компиляции C ++, конструктор не имеет возвращаемого типа ... но я его не указал - PullRequest
4 голосов
/ 18 апреля 2011

Итак, вот ошибка: 1> c: \ users \ ben \ documents \ visual studio 2010 \ projects \ opengl_learning \ opengl_learning_without_glut \ openglcontext.cpp (18): ошибка C2533: 'OpenGLContext :: {ctor}': конструкторам не разрешен тип возврата

А вот блок кода, в котором указана ошибка, в частности, ошибка происходит из конструктора по умолчанию:

#include <Windows.h>
#include <iostream>
#include "OpenGLContext.h"


/**
    Default constructor for the OpenGLContext class. At this stage it does nothing 
    but you can put anything you want here. 
*/
OpenGLContext::OpenGLContext(void){}
OpenGLContext::OpenGLContext(HWND hwnd) { 
    createContext(hwnd); 
}
/** 
    Destructor for our OpenGLContext class which will clean up our rendering context 
    and release the device context from the current window. 
*/  

OpenGLContext::~OpenGLContext(void) { 
    wglMakeCurrent(hdc, 0); // Remove the rendering context from our device context
    wglDeleteContext(hrc); // Delete our rendering context 
    ReleaseDC(hwnd, hdc); // Release the device context from our window
}

Почему!? * * 1006

Ответы [ 3 ]

18 голосов
/ 18 апреля 2011

Скорее всего, вы забыли точку с запятой после определения OpenGLContext.Затем ваш код анализируется как

class OpenGLContext { /* ... */ } OpenGLContext::OpenGLContext(void) { }

Это правильно синтаксически.Но поскольку конструкторы не имеют возвращаемого типа, как говорится в сообщении, компилятор жалуется.

4 голосов
/ 18 апреля 2011

Отсутствует точка с запятой после определения класса в заголовочном файле

1 голос
/ 18 апреля 2011

Откройте файл OpenGLContext.h и убедитесь, что вы поставили точку с запятой после OpenGLContext определения класса.

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