标题文件问题中的类定义

Class definition in header file issues

本文关键字:定义 文件 问题 标题      更新时间:2023-10-16

我正在收到编译器的以下错误./include.list.h(22)错误:标识符"输入"不确定。

这是我明确定义输入的标题文件 -

#ifndef INIT_H
#define INIT_H
#include "list.h"
class input{
public:
 //** thermo variables **//
  int N;
  double nddensity;
  double ndtemp;  
  double ndvol;
  double ndside;
  double ndsideh;
  // ** force field variables** //
  double eps;
  double sigma;
  double rcut;
  double rv;
  double rcut2;
  double rv2;
  double rcrv2;
  input();

};
void print(input &);
double randomnumber();
void  position(list &, input &, int flag);

#endif

在init.cpp中,我有类的初始化:

输入:: input(){

//** thermo variables **//
N = 500;
nddensity =.8;
ndtemp = 2.0;  
ndvol = N/nddensity;
ndside = pow(ndvol,1.0/3.0);
ndsideh = ndside/2;

// ** force field variables** //
eps = 1;
sigma = 1;
rcut = 2.5;
rv = 1.1*rcut;
rcut2 = rcut*rcut;
rv2 = rv*rv;
rcrv2 = (rv-rcut)*(rv-rcut);
 }

我似乎无法弄清楚为什么输入不确定到无效打印。任何帮助都将不胜感激。

您有圆形依赖。

您可以转发声明另一个类,但这仍然是一个糟糕的设计。最好完全消除循环依赖性。乍一看,您甚至需要包括list.h吗?您在哪里使用其中声明的内容?

您在类别定义之前包括 list.h ,因此该标头不可用。根据错误消息, list.h中的某些内容需要校园。

您不需要list的完整定义,因此请替换#include用远期声明

class list;

list.h中,您可能需要类似的input声明;或者,如果标题对其进行复杂的事情,则可能有必要包括init.h