【发布时间】:2013-12-22 21:08:22
【问题描述】:
如果这个话题之前已经提出并解决过,请提前道歉。
我想创建一个带有纯虚函数(抽象类)的基类,这样当从它创建派生类时,用户有义务在派生类中实现这个函数的主体。关键是在纯虚函数中,我想将派生类型的参数对象作为参数。这可能吗?
例如:
class Base{
public:
virtual void DoSomething (A object1, B object2) = 0;
};
class A: public Base{
public:
DoSomething(A x, B y) {
...
...
};
};
class B: public Base{
public:
DoSomething(A x, B y) {
...
...
};
};
我试过了,但是编译器抱怨说它对派生类一无所知,我理解这是因为它们是在基类之后创建的。有没有办法规避?还是有另一种方法可以做我想做的事,即强制用户在派生类中使用派生类类型的 arguments 参数对象实现函数体?
提前致谢!
【问题讨论】:
-
听起来你需要模板...
-
您可能想了解Curiously recurring template pattern。它本身可能无法帮助您解决这个问题,但它可能会给您一些想法。
-
以上任何一种,或者将参数作为引用/指针,然后您可以转发声明的类。
-
我发誓我在阅读了上面链接到你的文章之后写了下面的回复,诚实。尽管这个例子几乎一字不差...
标签: c++ arguments derived-class base-class pure-virtual