来自虚函数的未定义引用

时间:2011-03-17 11:23:46

标签: c++ undefined-reference

我有一个类:

Base.h

class Base {
    public:
        Base();

        virtual int getInfo(int i);

    protected:
        int GetDetail (int iVal);

}

inline int Base::getInfo(int i){

     int output = GetDetail(i);
     return output;
};

Ib Base.cpp,我定义了GetDetail。

int Base::GetDetail(int i){
int output;
// do work to output
return output;
}

我有一些从他们自己的实现getInfo()调用GetDetail的派生类。

当我从Base.h中的虚函数定义中删除对getInfo()的调用时,代码将编译,派生类自己实现。

当我使用内联虚拟函数调用GetDetail的虚函数进行编译时,链接失败并显示:

未确定参考GetDetail。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

  1. class Base {...};
  2. 之后添加缺少的分号
  3. 确保将Base.o链接到您的可执行文件中。
  4. 作为参考,我可以使用g ++ 4.4.3成功编译/链接你的例子(添加了分号)。

答案 1 :(得分:2)

删除inline前面的int Base::getInfo(int i)说明符,然后尝试(: