0

我有一个跨越两个文件的类。它在declare.h文件中声明并在define.cpp文件中定义。

定义.h

class A{
    public: int a;
            void func(){ a = some_other_func(); }
             A();
};

定义.cpp

A::A(){
    a =0;
}

总体思路是在构造函数中初始化一个变量,然后在内联函数中使用它。但是构造函数定义和函数定义在不同的文件中。这有什么问题吗?

4

3 回答 3

0

您需要#include "declare.h"输入define.cpp然后将构造函数编写为A::A() : a(0){}.

于 2012-08-30T05:32:05.573 回答
0

声明/定义分离绝对没有问题,只要declare.h包含在define.cpp. 但通常的做法是实现文件与声明文件同名,除了后缀。所以你的情况可能是A.hand A.cpp

但是,成员变量a本身的初始化存在问题。您可能希望在构造函数初始化列表中进行初始化 int a

A::A() : a(0) {}

在您的代码中,它根本没有被初始化。您正在a构造函数的主体中创建和初始化一个称为局部变量的局部变量。大概这不是你想要的。

于 2012-08-30T05:32:47.843 回答
0

虽然总的来说这不是技术问题。您应该采用 .h 文件是代码接口的约定,因此它们应该只包含其他代码调用您的代码所需的内容。

于 2012-08-30T05:33:13.310 回答