[英]C++ Static function variable
在我的一個方法中,傳遞一個帶有兩個參數的函數,並保存為rightClick。 但是,因為它在靜態函數中,編譯器希望之前初始化函數。 我怎么能這樣做?
Mouse.cpp
void Mouse::clicked(int button, int state, int x, int y)
{
if(button == GLUT_LEFT_BUTTON) {
if(state == GLUT_DOWN) {
isDragging = true;
CurrentX = x;
CurrentY = y;
}
else
{
isDragging = false;
}
}
else if (button == GLUT_RIGHT_BUTTON)
{
if (state == GLUT_DOWN)
{
isDragging = true;
rightClick(x,y);
}
}
}
void Mouse::setRightClickFunction(void (*func)(int, int))
{
rightClick = func;
}
在Click之前調用setRightClickFunction。 除了現在我得到一個不同的問題:“Mouse :: rightClick”,引用自:Mouse :: click(int,int,int,int)在Mouse.o中
根據你的評論,你得到一個關於“未定義引用Mouse::rightClick
”的鏈接器錯誤。這與函數指針無關。只是每當你在一個類中聲明一個靜態數據成員時,它只是一個聲明。你必須在某處定義它(=在一個.cpp文件中)。
假設你的類Mouse
看起來是這樣的:
class Mouse
{
//...
static void (*rightClick)(int, int);
//...
};
你應該把這行放在Mouse.cpp
某個地方:
void (*Mouse::rightClick)(int, int) = 0;
這將作為靜態數據成員的定義rightClick
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.