用了很久,也私有了很久~好像以前也想到過~
mloginbtn->subscribeevent( cegui::window::eventmouseclick, cegui::event::subscriber( &guilogin::handleclickbtnlogin, this ) );
handleclickbtnlogin是私有的函式,subscriber將函式指標的位址和this物件指標儲存起來了。。
為啥不報訪問私有函式的錯誤那?
//privatememberfuncptr.h
#pragma once
#include "stdio.h"
class slotfunctorbase
;virtual void operator()() = 0;
};slotfunctorbase* g_slotfunctorbase;
template
class memberfunctionslot : public slotfunctorbase
virtual void operator()()
private:
memberfunctiontype d_function;
t* d_object;
};class privatememberfuncptr
};//privatememberfuncptr.cpp
#include "privatememberfuncptr.h"
void privatememberfuncptr::bind()
void main()
1.main中生成
privatememberfuncptr 0x003d3518
2.void privatememberfuncptr::bind()函式中
0x00411580 privatememberfuncptr::print(void)
3.跟到memberfunctionslot的建構函式中
memberfunctionslot(memberfunctiontype func, t* obj) :
d_function(func),
d_object(obj)
func = 0x00411131 privatememberfuncptr::print(void)
obj = 0x003d3518
為什麼會有差異那?估計在
virtual void memberfunctionslot::operator()()
中可以間接訪問私有函式的關鍵就在上面黃色函式位址發生了變化~希望高手能解答下~
什麼函式可以是或不是虛函式
虛函式的呼叫關係 this vptr vtable virtual function 虛函式指標在類的建構函式中建立 屬於類的成員 呼叫this訪問虛函式指標,指標指向虛函式表 static成員函式 static成員不屬於任何類物件或類例項,沒有this指標,因此不能為虛函式。建構函式 建立初始化物...
金為什麼可以生水?水為什麼可以生木?
五行相生,金生水 水生木 木生火 火生土 土生金,在現代人看來,有些不可理解,例如 金為什麼可以生水?水為什麼可以生木?同理,五行相剋,金剋木 木剋土 土剋水 水剋火 火剋金當中,木剋土 土剋水之類,也有點不好理解,似乎與常識有些格格不入。其實,一切產生於古代的文化,都必須用那個時代的常識或理念來解...
機器為什麼可以學習
機器學習 人工智慧炙手可熱,但是機器到底為什麼可以學習呢?本文將從霍夫丁不等式講到vc維,機器學習的原因所在。機器什麼時候可以學習 機器怎麼學習 如何讓機器學得更好總結 機器學習乍聽之下很厲害,這時候人就會想,這乙個普普通通的死板的機器,怎麼會學習呢?很容易地,人們舉了個簡單的問題 如下圖 x,y,...