我在C ++中使用虚函数时遇到一个小问题
我有一个B类,它扩展了A类。
Class A{
virtual function 1 // does nothing
virtual function 2 // does nothing
}
class B : public class A {
function 1 { does some thing }
function 2 { does some thing }
}
我有另一个类工具
class implement {
B b;
A *a = &B;
a.function 1();
a.function 2();
}
编译时,此代码在使用GCC编译器
进行编译时出现以下错误对函数1和函数2的未定义引用。
请帮我解决这个问题 提前谢谢
答案 0 :(得分:5)
在C ++中,只允许在没有函数定义的情况下存在纯虚函数
在您的代码中,您没有任何纯虚函数。纯虚函数是声明中具有=0
的函数
例如:
virtual void doSomething()=0;
基类virtual
中的function1()
成员函数(function2()
和A
)必须才有定义,因为它们不是纯虚拟的。您没有提供他们的定义,因此链接器恰当地抱怨缺少定义。
undefined reference to function 1 and function 2