在.h文件中包含多个类

Including multiple classes within a .h file

本文关键字:包含多 文件      更新时间:2023-10-16

假设我有4个类A, B, C和D,并且我想在一个实现来自另一个.h文件User的纯虚函数的类中使用这4个类。我的问题是如何将这4个类包含到一个。h中,以便该。h的。cpp将允许我在类中调用这些函数。

这是我到目前为止所尝试的:

#include "User.h"
#include "A.h"
#include "B.h"
#include "C.h"
#include "D.h"
Class create : public User, public A, public B, public C, public D
{
public:
    create();
    virtual ~create();
    bool a1();
    bool b1();
    bool c1();
    bool d1();
    int a2();
    int b2();
    int c2();
    int d2();
};

然后当我尝试在create.cpp中调用这些函数(在a.p p, b.p p, c.p p, d.p p中声明)时,我被告知"对A::a1()的未定义引用…等等。

这有意义吗?

undefined reference to ...错误不是编译错误。这是一个链接错误。

基本上,链接器是一个程序,它把多段目标代码(即编译后的代码)放在一起来创建一个可执行文件。在您的例子中,编译器知道方法A::a1()必须存在,同意它的声明(名称和参数),并且不会抱怨它的使用。然而,类似器找不到它的定义(基本上,它的编译实现)。

对于如何正确编译和链接代码的解释,您提供的细节太少了,但是这个过程应该包括每个.cpp文件的编译,这些文件包含了您的类的实现。关于链接的一些细节可以在以下问题中找到:

c++链接object's文件(c++)

在g++中链接文件

你可能需要这样做:

g++ source_code.cpp A.cpp B.cpp C.cpp D.cpp

之类的。如果需要链接目标代码,一旦将每个单独的.cpp文件编译成.o文件,将.cpp扩展名替换为.o