在C ++中使用虚函数

时间:2013-02-23 18:31:06

标签: c++ function virtual

我在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的未定义引用。

请帮我解决这个问题 提前谢谢

1 个答案:

答案 0 :(得分:5)

在C ++中,只允许在没有函数定义的情况下存在纯虚函数 在您的代码中,您没有任何纯虚函数。纯虚函数是声明中具有=0的函数 例如:

virtual void doSomething()=0;

基类virtual 中的function1()成员函数(function2()A)必须才有定义,因为它们不是纯虚拟的。您没有提供他们的定义,因此链接器恰当地抱怨缺少定义。

undefined reference to function 1 and function 2