使用指针数组时出现“未定义的引用”错误

时间:2016-01-13 06:58:31

标签: c++ arrays pointers

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

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*,我尝试了其他一些东西但无济于事。

2 个答案:

答案 0 :(得分:1)

undefined reference表示某些函数或变量已声明但未实现。在这种情况下,您需要提供构造函数的实现,例如:

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

对于析构函数也一样。

答案 1 :(得分:1)

您收到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());
}