首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个包含3个对象的类,每个对象都有指向彼此的指针,还有一个初始化列表来传递对这些对象的引用。错误

一个包含3个对象的类,每个对象都有指向彼此的指针,还有一个初始化列表来传递对这些对象的引用。错误
EN

Stack Overflow用户
提问于 2011-01-19 01:19:13
回答 1查看 459关注 0票数 0

Agent.h://#include "Genetics.h“"Sensors.h”"Effectors.h“

代码语言:javascript
复制
class C_Agent
{
public:

    C_Agent();

    C_Genome Genome;
    C_Sensors Sensors;
    C_Effectors Effectors;
    s_agentParameters parameters; 
}; 

Agent.cpp://#包含"Agent.h“

代码语言:javascript
复制
C_Agent::C_Agent() 
: parameters(), Sensors(& parameters), Effectors(& parameters),
  Genome(& Sensors, & Effectors)
{ 
    //setup parameters
    Effectors.p_Genome = & Genome; 
}

Sensors.h://#包含"Genetics.h“

代码语言:javascript
复制
class C_Sensors
{
  public:
    s_agentParameters * p_parameters;
    C_sensors(s_agentParameters * p_parametersRef);
};

Sensors.cpp://#包含"Sensors.h“

代码语言:javascript
复制
C_Sensors::C_Sensors(s_agentParameters * p_parametersRef)
: p_parameters(p_parametersRef) {}

Effectors.h //#包含"Genetics.h“

代码语言:javascript
复制
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“

代码语言:javascript
复制
C_Effectors::C_Effectors(s_agentParameters * p_parametersRef)
: p_parameters(p_parametersRef) {}

Genetics.h://#include "Sensors.h“"Effectors.h”

代码语言:javascript
复制
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“

代码语言:javascript
复制
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对象的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-19 01:22:19

如果你有一个循环依赖,你需要在某个地方对至少一个类名进行正向声明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4726974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档