2011-12-27 7 views
2

по какой-то причине я получаю несколько ошибок, когда включаю свой собственный заголовочный файл, который имеет простое определение класса. Вот код:, включая заголовки, приводит к ошибкам

#define WIN32_LEAN_AND_MEAN 
#include "windows.h" 
//#include "CInt.h" <--- i get multiple errors once i activate this line 

HINSTANCE  hInst; 
HWND   wndHandle; 

bool  initWindow(HINSTANCE hInstance); 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    if (!initWindow(hInstance)) return false; 

    MSG msg; 
    ZeroMemory(&msg, sizeof(msg)); 

    while(true) 
    { 
     while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) 
     { 
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
     } 

     if(msg.message == WM_QUIT) break; 
    } 

    return msg.wParam; 
} 

bool initWindow(HINSTANCE hInstance) 
{ 
    WNDCLASSEX wcex; 

    wcex.cbSize    = sizeof(WNDCLASSEX); 
    wcex.style    = CS_HREDRAW | CS_VREDRAW; 
    wcex.lpfnWndProc  = WndProc; 
    wcex.cbClsExtra   = 0; 
    wcex.cbWndExtra   = 0; 
    wcex.hInstance   = hInstance; 
    wcex.hIcon    = LoadIcon(0, IDI_APPLICATION); 
    wcex.hCursor   = LoadCursor(0, IDC_ARROW); 
    wcex.hbrBackground  = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH)); 
    wcex.lpszMenuName  = 0L; 
    wcex.lpszClassName  = L"MOVEENGINE"; 
    wcex.hIconSm   = 0; 

    RegisterClassEx(&wcex); 

    wndHandle = CreateWindow(L"MOVEENGINE", L"MOVE ENGINE", WS_EX_TOPMOST | WS_POPUP | WS_VISIBLE, 0, 0, 1920, 1080, NULL, NULL, hInstance, NULL); 

    if (!wndHandle) return false; 

    ShowWindow(wndHandle, SW_SHOW); 
    UpdateWindow(wndHandle); 

    return true; 
} 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    int iVirtKey = static_cast<int>(wParam); 

    switch (message) 
    { 
     case WM_KEYDOWN: 
      switch(iVirtKey) 
      { 
       case VK_ESCAPE: 
        PostQuitMessage(0); 
        break; 
      } 
      return 0; 

     case WM_DESTROY: 
      PostQuitMessage(0); 
      break; 
    } 

    return DefWindowProc(hWnd, message, wParam, lParam); 
} 

также код CInt.h:

class CInt 
{ 
public: 
    int k; 

    CDirect3DDevice(int x):k(x){}; 
} 

Так что случилось с моим кодом? (Я использую Visual Studio 2010)

ответ

7

Вам не хватает точки с запятой после определения класса в вашем .h-файле.

+0

oops, missed it .. thanks –

2

Кроме того, отсутствует точка с запятой dasblinkenlight отметил, вы также инициализируем элемент из метода, который не является конструктором, здесь:

CInt::CDirect3DDevice(int x) : k(x) {}; 

Это приведет к ошибкам, так как участники могут использовать только синтаксис : k(x) из класс «ctor», а не другие методы.

Похоже, что это могут быть ошибки копирования-вставки, но без публикации ошибок, которые вы получаете, нельзя точно сказать.

Смежные вопросы