c成員函式指標問題

時間 2021-12-19 18:41:34

1樓:小李飛刀再飛刀

好像報錯這兩種型別是不匹配的。

void (form::*_ptr)();

void (mainform::* func)();

給他強制轉換一下:

typedef void (form::*_ptr)();

但是還是不明白你這樣做的目的何在。呼叫另外一個類的成員函式,為什麼不通過物件呢?或者靜態成員函式也行啊!要不然宣告control是mainform的友元類。

在你原來的control類的exec函式處理的有問題:

void exe()

我這樣修改了下:control接收到事件時(比如button被按下)它可以將這個訊息傳遞給mainform,由mainform來判斷並決定怎麼做,而不是把mainform的成員函式預先設定到control裡面。這樣我覺得比函式指標要好理解些。

對每個control設定它的parent,事件發生時,就呼叫parent的handleevent函式。這裡就是mainform的handleevent了。再在裡面根據sender和message來呼叫不同的成員函式。

class control;

class form;

class mainform;

class form

; class control

form * parent;

void setparent( form *form )

};class mainform : public form

; void handleevent(int sender, int message)

void init()};

2樓:

要在 class mainform類裡宣告 friend class control

這樣類間就可以相互呼叫函式了~

C類的問題基類成員函式可以呼叫子類的成員函式嗎

父類 子類 這種關係,本來設計就是把 具備共性的東西放在父類裡,不具備共性的放在子類裡.嚴格來說,父類是不能去呼叫某個子類特有的介面的.你這樣瞎搞 就破壞了這種構架,只能讓程式紊亂.所以你可以這樣子 在父類立面設計一個通用介面,然後對這個通用介面下指令,子類收到這個訊息,大多不處理,只有那個特殊的子...

c語言的函式指標舉個例子,c語言中函式指標是什麼 有什麼用 舉個例項

劉文正粉絲 函式指標告訴cpu下一步需要執行 的 的指標,一陣列十分相像.include void function int i,double d 一個函式的宣告 void anotherfunction int i,double d 另外一個函式宣告 int main mxl033 回答是對的。v...

C語言指標函式求救

1全部程式是錯的!首先要知道,陣列a,各元素的地址是連續的。當a定義為陣列時a 5 那麼系統會給陣列分配一個連續 物理上是連續的 的儲存空間。這樣將p a,就是將陣列的首地址賦予了指標p,然後p 就是指向了連續地址的下一個元素地址,是合法的。但是,如果a不是陣列,如你的程式 p a,將變數a的地址賦...