我有一个基类和一些派生。我必须从每一个“注册”一些静态函数。这里是例子:参考派生函数
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