我有指令使用指针指针作为指针数组,这就是我所拥有的:
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*
,我尝试了其他一些东西但无济于事。
答案 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());
}