我有,我想看看这样一个基类:如何获得C++构造函数中的多态行为?
class B
{
// should look like: int I() { return someConst; }
virtual int I() = 0;
public B() { something(I()); }
}
被强制派生类重写I
并迫使其点的每个对象被创建时被调用。这被用来做一些簿记,我需要知道什么类型的对象正在构建(但我否则将当前对象作为基类)。
这不起作用,因为C++不会让你从构造函数中调用一个抽象的虚函数。
有没有办法获得相同的效果?
基于this link它似乎是答案是没有办法得到我想要的东西。然而它说的是:
简短的回答是:没有。基类不知道它是从哪个类派生出来的,这也是一件好事。
[...]
也就是说,直到构造函数Derived1 :: Derived1开始,对象才会正式成为Derived1的实例。
但是在我的情况,我不想知道它为,但它会成为。事实上,只要用户可以(事后)将其映射到一个班级,我甚至不关心我回来的东西。所以我甚至可以使用类似返回指针的东西并且避开它。
(现在回读该链接)
阅读此:http://stackoverflow.com/questions/1425695/1426834。 您可以使用PIMPL。 – 2009-09-21 10:54:17