簡體   English   中英

C ++中的成員函數指針

[英]Member Function Pointers in C++

我正在嘗試從兩個成員函數之一中檢索一個布爾值。 我想調用一個成員函數(main),它將指向基於傳遞給main的值的兩個成員函數之一......這是我到目前為止所擁有的:

    class CRoutine{

    ...
    BOOL (*MainRoutine(BOOL opcode))();
    static BOOL SubRoutine1();
    static BOOL SubRoutine2();
    ...
    };

    BOOL (*CRoutine::MainRoutine(BOOL opcode))()
    {   
        switch ( opcode )
        {
        case false:
            MessageBox(NULL, L"Routine1", L"Routine1", MB_OK);
            return &CRoutine::SubRoutine1;
        case true:
            MessageBox(NULL, L"Routine2", L"Routine2", MB_OK);
            return &CRoutine::SubRoutine2;
        default:
            MessageBox(NULL, L"Default Routine Selected", L"Routine1", MB_OK);
            return &CRoutine::SubRoutine1;
        }
    }

    BOOL CRoutine::SubRoutine1()
    {
        MessageBox(NULL, L"Routine1", L"Routine1", MB_OK);
        return true;
    }
    BOOL CRoutine::SubRoutine2()
    {
        MessageBox(NULL, L"Routine2", L"Routine2", MB_OK);
        return false;
    }

    winMain(...)
    {
    ...
 m_routine = new CRoutine();
    BOOL result = m_routine->MainRoutine(0);
    ...
    }

我的問題是:

如何調用MainRoutine()以從SubRoutine1()或SubRoutine2()獲取布爾值。 當我按原樣運行程序時,出現以下錯誤:

錯誤C2440:'初始化':無法從'BOOL(__ cdecl *)(void)'轉換為'BOOL'

這主要是我感興趣的理論,我知道還有其他方法可以得到這樣一個簡單的答案...在此先感謝。

像這樣:

BOOL result = m_routine->MainRoutine(0)();

這是因為你從MainRoutine(0)返回函數指針,因此你需要另一對括號來調用它指向的函數。


順便說一句,您返回普通函數指針,而不是成員函數指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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