幫助我理解下面的代碼片段:奇數語法:範圍運算符後的星號(::)?
(foo.h中)
class Foo
{
public:
typedef void (MyType::*Handler)(SomeOtherType* t);
Foo(Handler handler) : handler_(handler) { }
private:
Handler handler_;
};
(mytype.h)
class MyType
{
public:
MyType() { }
void fun1() { }
void fun2() { }
};
究竟是foo.h中這裏聲明的typedef?我可以看到它是某種函數指針,但星號的意義是什麼?它似乎是去引用一個類型(??),並以某種方式試圖將新的typedef指針「附加」到MyType(?!?)的類型。
請問有人可以在這裏發光嗎?非常困惑:S
Wowsers。我不知道這樣的事情存在。更糟糕的是,語法完全是鈍的。這些只是個人的抱怨。 非常感謝! – Daniel
@Daniel:好消息是你不必使用那種蹩腳的語法。看看'std :: function'和'std :: bind'(或者'boost :: function' /'boost :: bind',如果你仍然使用C++ 03的話)。 –
@CatPlusPlus你可能還會提到':: *'是一個單一的標記,而不是'::'和'*'的連接。原始問題中的措詞使我認爲海報並不知道這一點。 –