我有一個基類和一些派生。我必須從每一個「註冊」一些靜態函數。這裏是例子:參考派生函數
class Base
{
// Some interface...
};
class Der1 : Base
{
static void Do();
};
class Der2 : Base
{
static void Do();
};
void processStatic()
{
SomeFunc(Der1::Do);
SomeFunc(Der2::Do);
}
正如你所看到的,SomeFunc
接收函數指針。我想要每一個新的派生類都自動完成,這是可能的嗎?也許,在Base
類中預定義靜態函數並在那裏註冊它。但是我認爲這是不可能的,是嗎?
也許,這將是更容易理解我想要什麼:
class Der1 : Base
{
Der1() { SomeFunc(Der1::Do); }
static void Do();
};
class Der2 : Base
{
Der2() { SomeFunc(Der2::Do); }
static void Do();
};
什麼' SomeFunc'呢?你希望它被稱爲每一個建築,就像你的第二個例子,或者只有一次,就像你第一個例子中推測的那樣?這是否重要?訂單是否重要? – GManNickG 2011-04-06 20:05:06
你想每個班級調用一次註冊函數,還是每個對象調用一次?第一個例子暗示前者;第二個例子暗示了後者。 – 2011-04-06 20:06:10
@ rob-adams每班一次。 @gman該函數將函數指針放入稍後使用的某個列表中。 – Ockonal 2011-04-06 20:07:50