如何使用不同目录的类

时间:2013-12-06 17:36:42

标签: c++

我想在D类中使用C类的对象。

该程序的目录树类似于:

directory1/directory2/main.cc
directory1/directory2/classC.cc
directory1/directory2/classC.h
directory1/directory3/classD.cc
directory1/directory3/classD.h

我在classD.h中包含了classC的绝对路径,但如果我尝试运行,我会收到此错误:

Undefined reference to nm1::ClassC::ClassC()

在classD中,我以这种方式调用对象:nm1::ClassC * obj = new ClassC(); 我在wscript中添加了正确路径的正确标题。

ClassC构成了nm1名称空间的一部分,ClassD构成了nm1::nm2名称空间的一部分。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

尝试使用

#include<file path>

#include"file path"

其中文件路径是使用C的完整文件路径:....如果您使用的是Windows

答案 1 :(得分:0)

这里的问题是每个.cc文件是单独编译的。在编译时,它们由标题there is a function/class/constructor called x告知,但不是该函数/类的实现细节,因为这是在.cc文件中单独编译的。

在链接时,您需要动态或静态链接另一个库,或将目标文件合并到同一个可执行文件中。这是由链接器完成的。您在那里收到的错误是因为在链接时,您承诺的类ClassC在那里,通过包含标题,在您链接的任何库或对象中都找不到。

你的标题很好。我无法告诉你如何正确链接,因为我不知道你正在使用什么编译器/链接器。但是查看如何向链接命令添加链接器路径。还要确保你正在编译每个文件,并且每个编译都产生某种对象输出,然后检查消耗它们的是什么。