2010-05-15 50 views
0

我有一個很奇怪的問題,下面的代碼不會編譯:C++(g ++)編譯錯誤,期望的「=」/ etc。之前「mywindow的」(我的類名)

#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很(非常)新++在此先感謝我coukd是錯的’前’屬性,編輯: 是的,我試着將我的課程重命名爲MyWin從窗口解決問題,但它沒有奏效,我忘了重命名構造函數。我已經更新了代碼,但仍然沒有解決問題。這裏是我的項目中唯一的其他代碼,我將它鏈接起來,因爲添加這些空格需要一段時間: here's the code

+1

你包括什麼標題?請注意,您的構造函數應該被命名爲MyWindow,而不是您擁有的Window,但這不會導致您發佈的錯誤。 – Kyle 2010-05-15 18:54:45

回答

0

啊,傻,我主要保存爲一個.c文件而不是.cpp,導致Code :: Blocks試圖編譯它,而不是C++,感謝您的幫助!

1

最有可能您的問題出現在發佈文件之前。在包含文件或以前的包含中。

+1

當我在類定義之後忘記分號時,有時會發生這種情況。它開始抱怨* next *包含的頭文件中的類。 – Thomas 2010-05-15 18:54:56

+1

由於候選人缺少';','}'等 – 2010-05-15 18:55:12

1

幾件事情 - 你需要有:

#include <windows.h> 
在你的代碼

地方。如果:

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

應該是一個構造函數,它應該甲腎上腺素:

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

你的函數定義後使用分號。刪除它們。 (參考你的pastebin代碼)

+0

如果根據定義你的意思是在實際功能之後的大括號之後,我嘗試刪除這些,但它並沒有幫助 – Ell 2010-05-16 17:30:35

1

這個頭文件沒有被編譯爲C++,因此編譯器不能將「class」識別爲保留字。我遇到了這個錯誤,這是因爲我試圖在Objective-C源文件中包含一個C++頭文件,解決方案是使用一個精簡的直頭頭文件包含在Obj-C中。

- 剛剛遇到此問題的Fellow C++ noob。

1

您確定您使用的是g++而不是gcc?這是一個愚蠢的問題,但C++中的class關鍵字不是C中的關鍵字,這可能會觸發這樣的警告。未經測試的理論,但我遇到了幾次。

相關問題