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