2015-04-14 121 views
1

我有一個包含一個指向一個類如下其成員函數:分配參數函數類的成員

class demo{ 
    void (*fn_ptr) (int) = NULL;   
    void AssignPtr(void (*fptr)(int)) 
    { 
     *fn_ptr = *fptr; 
    } 
}; 

我得到錯誤:

error: cannot convert ‘void(int)’ to ‘void(int)’ in assignment

+1

函數不是對象。你不能分配給功能。 – chris

+1

這是一個沒有賦值的引用我希望成員指針指向可以稍後調用它的函數 –

+2

@SamehKamal:然後分配指針;不要引用它並嘗試分配它指向的功能。 –

回答

10

我認爲你的意思僅指定指針:

fn_ptr = fptr; 

如在:

class demo { 
    void (*fn_ptr)(int) = NULL; 

public: 
    void AssignPtr(void (*fptr)(int)) 
    { 
     fn_ptr = fptr; 
    } 

    void Call(int i) { 
     fn_ptr(i); 
    } 
}; 

void print(int x) { 
    std::cout << "called print(" << x << ")\n"; 
} 

int main() { 
    demo d; 
    d.AssignPtr(print); 
    d.Call(42); 
}