我有一个跨越两个文件的类。它在declare.h文件中声明并在define.cpp文件中定义。
定义.h
class A{
public: int a;
void func(){ a = some_other_func(); }
A();
};
定义.cpp
A::A(){
a =0;
}
总体思路是在构造函数中初始化一个变量,然后在内联函数中使用它。但是构造函数定义和函数定义在不同的文件中。这有什么问题吗?
我有一个跨越两个文件的类。它在declare.h文件中声明并在define.cpp文件中定义。
定义.h
class A{
public: int a;
void func(){ a = some_other_func(); }
A();
};
定义.cpp
A::A(){
a =0;
}
总体思路是在构造函数中初始化一个变量,然后在内联函数中使用它。但是构造函数定义和函数定义在不同的文件中。这有什么问题吗?
您需要#include "declare.h"输入define.cpp然后将构造函数编写为A::A() : a(0){}.
声明/定义分离绝对没有问题,只要declare.h包含在define.cpp. 但通常的做法是实现文件与声明文件同名,除了后缀。所以你的情况可能是A.hand A.cpp。
但是,成员变量a本身的初始化存在问题。您可能希望在构造函数初始化列表中进行初始化: int a
A::A() : a(0) {}
在您的代码中,它根本没有被初始化。您正在a构造函数的主体中创建和初始化一个称为局部变量的局部变量。大概这不是你想要的。
虽然总的来说这不是技术问题。您应该采用 .h 文件是代码接口的约定,因此它们应该只包含其他代码调用您的代码所需的内容。