Ошибка компиляции в C ++ (g ++), ожидается "=" / etc. До «MyWindow» (имя моего класса) - PullRequest
0 голосов
/ 15 мая 2010

У меня очень странная проблема, и следующий код не компилируется:

#ifndef MYWINDOW_HPP_INCLUDED
#define MYWINDOW_HPP_INCLUDED

class MyWindow{

    private:
        WNDCLASSEX window_class;
        HWND window_handle;
        HDC device_context_handle;
        HGLRC open_gl_render_context;
        MSG message;
        BOOL quit;

    public:
        Window(int height=416, int width=544, WindowStyle window_style=WINDOWED);
        void Show();
        void Close();
        ~Window();

};

#endif // MYWINDOW_HPP_INCLUDED

Я получаю следующую ошибку: ошибка: ожидается '=', ',', ';', 'asm' или ' атрибут ' до 'MyWindow'

Я не вижу здесь никаких синтаксических ошибок, хотя я могу ошибаться, поскольку я очень (очень) новичок в c ++. Заранее спасибо, эл.

EDIT: Да, я попытался переименовать свой класс в MyWindow из Window, чтобы решить проблему, но это не сработало, я забыл переименовать конструктор. Я обновил код сейчас, но это до сих пор не решило проблему. Вот единственный другой код, который у меня есть в моем проекте, я связал его, потому что добавление всех этих пробелов займет некоторое время: вот код

Ответы [ 6 ]

1 голос
/ 17 мая 2010

Вы уверены, что используете g++ вместо gcc? Это глупый вопрос, но ключевое слово class в C ++ не является ключевым словом в C, которое может вызвать такое предупреждение. Непроверенная теория, но я сталкивался с этим пару раз.

1 голос
/ 17 мая 2010

Этот заголовок не компилируется как C ++, поэтому компилятор не распознает «класс» как зарезервированное слово. Я получал эту ошибку, и это было потому, что я пытался включить заголовок C ++ в исходный файл Objective C, и решение было использовать урезанный прямой заголовок C для включения из Obj-C.

- Товарищ C ++ noob, который только что столкнулся с этим.

1 голос
/ 15 мая 2010

Пара вещей - вам нужно иметь:

 #include <windows.h>

где-то в вашем коде. А если:

 Window(int height=416, int width=544, WindowStyle window_style=WINDOWED);

должен быть конструктором, он должен ne:

 MyWindow(int height=416, int width=544, WindowStyle window_style=WINDOWED);
1 голос
/ 15 мая 2010

Скорее всего, ваша проблема предшествует опубликованному файлу. В том числе файл или предыдущий включают.

0 голосов
/ 18 мая 2010

Ах, глупо, я сохранил main как файл .c вместо .cpp, в результате чего Code :: Blocks пытается скомпилировать его как в c вместо c ++, спасибо за помощь, ребята!

0 голосов
/ 16 мая 2010

Вы используете точки с запятой после определения функций. Удалить их. (Ссылаясь на ваш код для вставки.)

...