免责声明:这可能是一个基本问题,但我是一名理论物理学家,通过训练试图学习正确编码,所以请多多包涵。
假设我想为一个相当复杂的物理系统建模。在我的理解中,对这个系统进行建模的一种方法是将它作为一个类来引入。但是,由于涉及到系统,类会很大,可能包含许多数据成员、成员函数和子类。将主程序和此类放在一个文件中会非常混乱,因此为了更好地了解项目,我倾向于将类放在单独的 .h 文件中。这样我就会有类似的东西:
//main.cpp
#include "tmp.h"
int main()
{
myclass aclass;
aclass.myfunction();
return 0;
}
和
// tmp.h
class myclass
{
// data members
double foo;
double bar;
public:
// function members
double myfunction();
};
double myclass::myfunction()
{
return foo + bar;
}
然而,这相当于我的新编译器中的以下编译器警告:function definitions in header files can lead to ODR violations
. 那么我的问题是:处理这种情况的首选方法是什么?我想我可以将 tmp.h 变成 tmp.cpp,但据我所知,这是 .h 文件的预期用途吗?