簡體   English   中英

C ++靜態函數變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM