当我将所有这些合并为一个文件时,我的代码可以编译并运行良好。但是,当我使用头文件并使用单独的文件时,出现此错误:
Undefined symbols for architecture x86_64:
"someClass::newNode()", referenced from:
_main in check.o
someClass::insert(someClass::Node*, char const*, char const*) in entry.o
ld: sym
找不到架构x86_64的bol
我已经尝试了所有方法,但找不到问题所在。它们使用“-c”分别编译,但是链接目标文件给了我错误。另外,在包含头文件时,我会使用包含保护措施和所有建议的技巧。任何帮助,将不胜感激!
//.h file
class someClass{
public:
//other stuff
struct Node
{
//...
};
Node *newNode();
};
//entry.C
Node someClass::newNode(){
someClass::Node *bNode = new someClass::Node;
//...
return bNode;
}
//check.C
int main(){
//...
someClass obj;
someClass.Node *root = obj.newNode();
return 0;
}
最佳答案
要在c++中获取嵌套类型,请使用“::”而不是“。”。
someClass::Node *root = obj.newNode();
关于c++ - 使用指针运行时无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59914139/