在.h文件中包含多个类

时间:2015-05-26 22:56:04

标签: c++

假设我有4个类A,B,C和D,并且我想在一个类中使用所有4个,这个类正在从另一个.h文件用户实现纯虚函数。我的问题是如何将这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.cpp,B.ccp,C.cpp,D.cpp中声明)时,我被告知“对A :: a1()的未定义引用”。 ..等等。

这有意义吗?

1 个答案:

答案 0 :(得分:1)

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

基本上,链接器是一个程序,它将多个目标代码(即编译代码)放在一起以创建可执行文件。在您的情况下,编译器知道方法A::a1()必须存在,与其声明(名称和参数)一致,并且不会抱怨它的使用。然而,liker找不到它的定义(基本上,它的编译实现)。

您提供的细节很少,无法解释如何正确编译和链接您的代码,但该过程应该包含每个.cpp文件的编译,其中包含您的类的实现。有关链接的一些详细信息可以在以下问题中找到:

C++ linking object's files (G++)

Linking files in g++

你可能需要这样做:

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

或类似的东西。如果需要链接目标代码, 将每个.cpp文件编译为.o文件后,将.cpp扩展名替换为.o