使用指针数组时出现"Undefined reference"错误

"Undefined reference" error when using an array of pointers

本文关键字:Undefined reference 错误 指针 数组      更新时间:2023-10-16

我有使用指针的指针作为指针数组的说明,这就是我所拥有的:

className **wordArray;
wordArray = new className*[wordCount];
ifstream fileInput;
fileInput.open(fileDir);
while (fileInput >> wordInput)
{
    wordArray[countNumber] = new className(wordInput.c_str());
    countNumber++;
}
class className
{
public:
    className(const char *word);
    ~className();
};
className::className(const char *word)
{
    char wordArray[strlen(word)];
    strcpy(wordArray, *word);
}

我的问题在编译或尝试编译时出现。它说对类有一个"未定义的引用"。该类的构造函数应该采用const char*,我已经尝试了其他一些事情无济于事。

未定义的引用意味着某些函数或变量已声明但未实现。在这种情况下,您需要提供构造函数的实现,例如:

className::className(const char *word)
{
    // do something here...
}

析构函数也是如此。

您收到Undefined reference错误,因为缺少className构造函数和析构函数的实现。两者都可以为空,但必须以内联方式存在,或作为单独的函数存在。

内嵌:

class className {
public:
  className(const char *word) {}
  ~className() {}
};

独立功能:

class className {
public:
  className(const char *word);
  ~className();
};
className::className(const char *word) {}
className::~className() {}

对我来说,这个最小的工作示例编译:

#include <string>
class className {
public:
  className(const char *word) {}
  ~className() {}
};
int main(int argc, char** argv) {
  className **wordArray;
  std::string wordInput = "test";
  int wordCount = 0;
  wordArray = new className*[wordCount];
  wordArray[0] = new className(wordInput.c_str());
}