noobie programmeur ici ~Forward erreur de liens
Je suis en train de copier un code de mes diapositives de cours, cependant, les diapositives ne montrent pas la configuration du fichier d'en-tête. Deux classes utilisent l'un l'autre (Agent et IBehaviour), donc sur la récréation j'ai couru dans un include cyclique. J'ai essayé d'utiliser la solution de déclaration directe (dans IBehaviour) pour résoudre mon problème, mais maintenant je reçois une erreur externe non résolue ... '
Je pense que je peux voir mon problème ~ J'ai une fonction qui prend en un pointeur vers un type incomplet dans IBehaviour.h, mais je ne sais pas comment résoudre ce problème.
Toute aide est grandement appréciée. Le code suivant a été condensé dans des fichiers h à des fins de lecture.
Agent.h
#pragma once
#include "IBehaviour.h"
#include <list>
class Agent
{
public:
Agent();
~Agent();
void Update();
protected:
std::list<IBehaviour*> m_behaviours;
};
Agent::Agent()
{
}
Agent::~Agent()
{
}
void Agent::Update()
{
for (auto iter = m_behaviours.begin(); iter != m_behaviours.end(); iter++)
(*iter)->Update(this);
}
IBehaviour.h
class Agent;
class IBehaviour
{
public:
IBehaviour();
~IBehaviour();
virtual void Update(Agent* pAgent);
};
IBehaviour::IBehaviour()
{
}
IBehaviour::~IBehaviour()
{
}
void IBehaviour::Update(Agent * pAgent)
{
}
SeekB
#pragma once
#include "IBehaviour.h"
class SeekB : public IBehaviour
{
public:
SeekB();
~SeekB();
void Update(Agent *pAgent) override;
};
SeekB::SeekB()
{
}
SeekB::~SeekB()
{
}
void SeekB::Update(Agent * pAgent)
{
// Apply seek force to pAgent
}
Bonjour, merci pour votre réponse. J'ai supprimé la classe de recherche tous ensemble. Le problème est entre l'agent et la classe IBehaviour. J'ai essayé de supprimer tous les cycliques comprend, mais le programme compile encore l'habitude ... erreur est: symbole externe non résolu _MAIN référencé dans la fonction « int_cdecl invoke_main (void) » –
peut vouloir (invoke_main @@ YAHXZ?) ajoutez la fonction 'main()' alors. ;-) Sur le plan positif, vous pouvez au moins savoir que vous faites des déclarations avant correctement, après tout! – Mitch