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