未定义对超类方法的引用

时间:2019-07-20 03:00:14

标签: c++ inheritance

我正在尝试创建一个函数,该函数通过从条目超类中调用另一个函数来从二进制搜索树中输出数据,但是我一直收到错误消息:

对“ Entry :: inOrderPrint(Entry *)”的未定义引用 collect2:错误:ld返回1退出状态

我尝试重命名超类inOrderPrint函数,但无济于事。

超类的头文件如下:

      String amount = "\\$(\\d+)";
      String name = "(\\b[A-Z][a-z]+\\b)";
      Pattern[] patterns = { Pattern.compile(amount), Pattern.compile(name)
      };
      String[] testStrings =
            { "buy a $30 giftcard for John", "buy John a $30 giftcard"
            };

      for (String test : testStrings) {
         for (Pattern pat : patterns) {
            Matcher matcher = pat.matcher(test);
            if (matcher.find()) {
               System.out.print(matcher.group(1) + " ");
            }
         }
         System.out.println();
      }

Entry类的.cpp文件:

class Entry
{
public:
    //...
    void inOrderPrint(Entry *startNode);

private:
    //...
};

BST.h子类文件:

#include "Entry.h"

//...
void inOrderPrint(Entry *startNode)
{
    // printing algorithm
}

以及子类.cpp文件:

#include "Entry.h"

class BST : public Entry
{
public:
    //...
    void inOrderPrint();

private:
    Entry *root;
};

真的不明白为什么编译器认为对Entry :: inOrderPrint(Entry *)的引用是未定义的。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

结果是我忘记将Entry ::范围添加到我的Entry.cpp文件中。