C ++类组合错误:未定义的引用

时间:2012-08-23 21:15:09

标签: c++ class abstract-class

有这个恼人的错误。

我一直得到对class :: method

的未定义引用

这是我想要的代码

student::student(){
conscience* c;
unsigned short choice = rand() % 4;
if (choice == 0){
    c = new betray();
}
if (choice == 1){
    c = new silent();
}
if (choice == 2){
    c = new confused();
}
if (choice == 3){
    c = new experienced();
}

但我一直收到错误。

这个工作很好地工作,但不是在主类构造函数中,而是通过参数传递

student::student(conscience* c){
    m_Conscience = c;
}

提前致谢。

编辑:确切错误:未定义引用`betray :: betray()'

1 个答案:

答案 0 :(得分:2)

未定义的引用可能意味着以下之一:

  1. 您在基类中有一个方法声明,您可以调用它,但从不在任何派生类中实现。
  2. 或者,它已实现,但您没有链接到它,因此链接器找不到它。
  3. 我建议你检查一下你是否正在联系betray.o。检查你的makefile。如果你没有makefile,我鼓励你写一个。