我想有指針類的方法,所以我有這樣的:指針類方法
class foo {
public:
static void bar() {
}
};
void (foo::*bar)() = &foo::bar;
無法編譯:(我得到:
> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
> initialization
我想有指針類的方法,所以我有這樣的:指針類方法
class foo {
public:
static void bar() {
}
};
void (foo::*bar)() = &foo::bar;
無法編譯:(我得到:
> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
> initialization
靜態方法,當按名稱使用而不是調用時,是一個指針。
void (*bar)() = foo::bar; // used as a name, it's a function pointer
...
bar(); // calls it
指針到靜態構件具有相同的類型的指針,非成員
嘗試:
void (*bar)() = &foo::bar;
TNX很多關於快速回答:) – mfolnovich 2009-10-10 13:01:10
bar()
是一個靜態函數,換句話說沒有this
參數。
void (*myfunptr)() = &(foo::bar);
TNX很多關於快速回答:) – mfolnovich 2009-10-10 13:04:00
TNX很多關於快速回答:) – mfolnovich 2009-10-10 12:59:19
不,這不是一個指針,它是一個函數。它雖然會*衰減*到函數指針。 – avakar 2009-10-10 14:13:15
哪一點更重要? – Will 2009-10-10 16:55:31