簡體   English   中英

調用成員函數指針

[英]Calling Member Function Pointers

我在結構中調用函數指針時遇到問題。 我之前在類之外使用過這種方法,但現在我正在使用函數指針到其他類方法的類方法中嘗試它....我收到編譯器錯誤。 這是我的班級:

class Myclass
{
    int i;

    void cmd1(int)
    {}

    void cmd2(int)
    {}

    void trans()
    {
        const struct
        {
            std::string cmd;
            void (Myclass::*func)(int)
        }
        CmdTable[] =
        {
            { "command1", &Myclass::cmd1 },
            { "command2", &Myclass::cmd2 }
        };

        CmdTable[0].func(i);
        CmdTable[1].func(i);
    }
};

CmdTable[0].func(i); CmdTable[1].func(i); 兩者都提供以下錯誤:錯誤:表達式必須具有(指針指向)函數類型。

我意識到可能有更好的方法來做到這一點,但我很好奇為什么我寫的東西不起作用。 任何解釋將不勝感激。

指向成員函數的指針是一個純屬性。 您需要將它與類實例組合才能進行有意義的函數調用。 例如,要使用實例*this ,您可以使用運算符->*並說:

(this->*CmdTable[0])(i);

或者您可以在對象值上使用operator .*

(*this.*CmdTable[0])(i);

后一種形式總是正確的。 對於前者,請注意operator->*可能會過載並執行不相關的操作。

暫無
暫無

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

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