采取这种简单的代码:在基础中使用抽象期望它是派生类?
class A{
public:
virtual void foo() = 0;
void x(){ foo(); }
};
class B: public A{ foo(){ ... } };
main(){
B b;
b.x();
}
我要的是建立一个抽象类,将有会调用一个函数期待它在派生类中
的问题是,实现的功能我似乎无法完成这项工作,编译器称它无法编译,因为它无法找到引用(或类似的内容)到foo()以在基类的x()中执行。这可以工作吗?任何人都可以给我一个这样的例子吗?
编辑:它似乎只是不工作时,“foo();”在A级(基础级)的破坏者之内......
它让我感到困惑。 = [
EDIT2:这有多有趣。我刚刚创建了一个callfoo(){foo(); }现在它编译好了,但如果我试图直接从基类A的析构函数中调用纯抽象函数,它会给我错误......怪异。任何人都有这个想法吗? O_o
对此有任何帮助吗?
感谢,
乔纳森
更新
它的工作的析构函数之外。现在我只是感到困惑。
尝试把“富()”的A(基地)类的析构函数里面,至少对我来说不是编译...
任何帮助PLZ?
在哪里的问题? – 2010-04-05 00:14:46
我会回到这里接受任何关于这个问题的答案,如果我做错了或不是,我正在使用gcc 4.3.2在vmware内的一个Linux机器中...感谢所有答案,到目前为止,我喜欢这个网站非常多... – Jonathan 2010-04-05 00:45:56
这是关于效率。只有在构建B对象的A部分时,才能创建和销毁对象的最有效方法是对B本身一无所知(因此不能称之为方法)。 – baol 2010-04-05 00:54:45