關於通過成員函式指標來獲得成員函式位址的方法確實比較困難。它的困難點在於必須繞過c++編譯器的型別檢查。像vc對成員函式指標型別檢查的很嚴,即使是void*型別都不能轉,也無法通過reinterpret_cast、dynamic_cast之類的來轉。
因此我這裡將採取暴力手段來獲取:
#include
using namespace std;
class test
void hello(int i)
};template
inline unsigned getmemberfuncaddress(t p)
return result;
}int main(void)
直接獲取類中 非static 成員函式位址的方法
includeusing namespace std class a static void fun2 void fun3 int main 輸出為 1 010d1226 010d1249 試了一下用 printf p n a fun1 能輸出位址。這裡不糾結了。include includeusi...
從結構體成員獲取結構體位址的方法
今天朋友面試,有乙個問題他沒回答上來,我便在這裡給出答案,希望能幫助到一些準備找工作的同學。因為結構體成員在記憶體中的儲存資料是按照成員定義順序儲存的,因此,要回答這個問題,首先得解決兩個問題 意識到這兩個問題,還得注意兩個細節 1 c c 語言中,對指標進行算數運算時指標跳過的記憶體是 sizeo...
獲取成員函式的指標
今天的話題比較有意思,如何獲取乙個非 static 成員函式的指標?考慮以下 c class a void a foo void 也就是說,如何獲取 a foo 的指標?那位說了 這有何難?乙個 typedef 全搞定!c typedef void a fooptr void fooptr func...