0

我有一个像这样的课程:

基数.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 的引用。

有任何想法吗?

4

2 回答 2

4
  1. 在后面添加缺少的分号class Base {...};
  2. 确保将 Base.o 链接到可执行文件中。

作为参考,我可以使用 g++ 4.4.3 成功编译/链接您的示例(已添加分号)。

于 2011-03-17T11:33:02.843 回答
2

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

于 2011-03-17T11:28:24.927 回答