예를 들면 이런 오류가 있다고 가정한다.
error C2664: 'glutDisplayFunc' : cannot convert parameter 1 from 'void' to 'void (__cdecl *)(void)' Error: "void (CGLMenuService::*) (int entryID)" 형식의 인수가 "void (__cdecl *)(int)" 형식의 매개 변수와 호환되지 않습니다.
사실 MFC 상의 OpenGL에서 glutCreateMenu를 사용하는데 콜백 함수를 이용해야 했다.
GLint mainMenuID = glutCreateMenu(Menu_hMain);
위의 저 Menu_hMain 은
void Menu_hMain(int entryID);
이런 형태로 헤더에서 선언하였는데 함수의 포인터형이 맞지 않아서 오류가 생겼었다.
멤버 함수는 type 형태 자체가 다르기 때문에 나타나는 문제였기에 앞에 static으로 선언하거나 전역변수로 선언하니 해결되었다.
static void Menu_hMain(int entryID);
※참고 : http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=950497&ref=950494
'옛날 작업 > MFC' 카테고리의 다른 글
[MFC] 컨트롤을 윈도우 스타일에 맞게 변경하기 (0) | 2016.03.27 |
---|