标题文件问题中的类定义
Class definition in header file issues
我正在收到编译器的以下错误./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
。
相关文章:
- 告诉CMake链接到自定义文件夹中的Boost
- 通过cMake使用具有自定义文件扩展名的共享库
- 威纳派读取自定义文件或文件夹的所有访问权限
- 使用命令列表解析自定义文件
- 单独的类声明和方法定义文件问题
- Qt解析自定义文件格式
- 将单独的头文件和类定义文件链接到主函数文件 - G++ 返回重载"undefined reference to"构造函数
- FAT32和NTF中的自定义文件属性
- 如何在没有"fatal error: Wt/WApplication: No such file or directory"的情况下将wt安装到自定义文件夹中
- C++ while 循环在自定义文件结构中
- QT C 读取自定义文件结构
- gcc 是否有编译指示来定义文件类型/编译器
- C/C++ 中的跨平台自定义文件头
- 使用头文件和类定义文件时未解决的外部符号错误
- 将此c++代码分解为单独的类规范文件和函数定义文件
- 自定义文件类中fstream对象的生存期
- 如何使用BinaryReader类使用C#读取自定义文件(C++)
- 提供带有libjpeg的自定义文件IO
- C++模块定义文件头内联符号
- 错误:未定义文件中的第一个引用符号