-2
我試圖從另一個類設置成員函數的指針,但是我不能弄清楚如何做到這一點。我有三個類:控制,按鈕,文本框。按鈕和文本框有自己的void _Draw(),並且Control類有一個指向void(* drawFunc(int))的指針從不兼容類型'void(Button :: *)(int)'分配給'void(*)(int)'
我希望Button和Textbox類有權訪問Control _drawFunc指針,將它設置爲_Draw功能。
void Draw1(int t) {
printf("%d\n", t);
}
struct Control {
void (*drawFunc)(int);
Control() {}
};
struct Button : Control{
void _Draw(int m) {
// ...
}
Button() {
drawFunc = &Button::_Draw; // Draw1 works fine
}
};
struct Textbox : Control{
void _Draw(int m) {
// ...
}
Textbox() {
drawFunc = &Textbox::_Draw; // Draw1 works fine
}
};
'void(* drawFunc)(int)'不是指向成員函數的指針。它是一個指向常規(獨立)功能的指針。會員職能和常規職能是完全不同性質的野獸。你不能讓'drawFunc'指向'Button :: _ Draw'。 – AnT
指向函數的指針和指向成員函數的指針是不同的類型。 –
另請注意,名稱以'_開頭,後跟'A-Z'保留,不應使用。 – HolyBlackCat