Agent.h://#include "Genetics.h“"Sensors.h”"Effectors.h“
class C_Agent
{
public:
C_Agent();
C_Genome Genome;
C_Sensors Sensors;
C_Effectors Effectors;
s_agentParameters parameters;
}; Agent.cpp://#包含"Agent.h“
C_Agent::C_Agent()
: parameters(), Sensors(& parameters), Effectors(& parameters),
Genome(& Sensors, & Effectors)
{
//setup parameters
Effectors.p_Genome = & Genome;
}Sensors.h://#包含"Genetics.h“
class C_Sensors
{
public:
s_agentParameters * p_parameters;
C_sensors(s_agentParameters * p_parametersRef);
};Sensors.cpp://#包含"Sensors.h“
C_Sensors::C_Sensors(s_agentParameters * p_parametersRef)
: p_parameters(p_parametersRef) {}Effectors.h //#包含"Genetics.h“
class C_Effectors
{
public:
s_agentParameters * p_parameters;
C_Genome * p_Genome; //forbids declaration w/ no type
C_Effectors(s_agentParameters * p_parametersRef);
};Effectors.cpp://#包含"Effectors.h“
C_Effectors::C_Effectors(s_agentParameters * p_parametersRef)
: p_parameters(p_parametersRef) {}Genetics.h://#include "Sensors.h“"Effectors.h”
class C_Genome
{
public:
C_Sensors * p_Sensors; //forbids declaration w/ no type
C_Effectors * p_Effectors; //forbids declaration w/ no type
C_Genome(C_Sensors * p_C_SensorsRef, C_Effectors * p_C_EffectorsRef);
};Genetics.cpp://#include "Genetics.h“"Sensors.h”"Effectors.h“
C_Genome::C_Genome(C_Sensors * p_C_SensorsRef, C_Effectors * p_C_EffectorsRef)
: p_Sensors (p_C_SensorsRef), p_Effectors (p_C_EffectorsRef) {}当我尝试编译时,我得到了6个错误"'class_name‘没有命名类型“和6个错误”ISO c++禁止声明没有类型的'class_name’“。我在main中也有一些尝试初始化一些C_Agent对象的代码。
发布于 2011-01-19 01:22:19
如果你有一个循环依赖,你需要在某个地方对至少一个类名进行正向声明。
https://stackoverflow.com/questions/4726974
复制相似问题