Et forcémen, il me dit: file2.h: Core was not declared in this scope
Si je mets "class Core; class Core::Hello;" il n'aime pas non plus.
Si quelqu'un sait comment éviter cela...
Fais l'inverse. Au lieu de :
#include "file2.h" // pour class World
écris :
class World;
Dans file1.cpp, n'oublie pas le #include "file2.h" si tu accèdes à des fonctions/variables membres de la classe World...
Vincent
-- vmime, une bibliothèque C++ sous licence GPL pour parser et générer des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Adrien Constant
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je veux utiliser n'est pas en fait World mais qqch::World... ce qui fait que le problème est le meme dans les deux sens :/
Vincent Richard wrote:
Et forcémen, il me dit: file2.h: Core was not declared in this scope
Si je mets "class Core; class Core::Hello;" il n'aime pas non plus.
Si quelqu'un sait comment éviter cela...
Fais l'inverse. Au lieu de :
#include "file2.h" // pour class World
écris :
class World;
Dans file1.cpp, n'oublie pas le #include "file2.h" si tu accèdes à des fonctions/variables membres de la classe World...
Vincent
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je
veux utiliser n'est pas en fait World mais qqch::World... ce qui fait
que le problème est le meme dans les deux sens :/
Vincent Richard wrote:
Et forcémen, il me dit:
file2.h: Core was not declared in this scope
Si je mets "class Core; class Core::Hello;" il n'aime pas non plus.
Si quelqu'un sait comment éviter cela...
Fais l'inverse. Au lieu de :
#include "file2.h" // pour class World
écris :
class World;
Dans file1.cpp, n'oublie pas le #include "file2.h" si tu accèdes à des
fonctions/variables membres de la classe World...
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je veux utiliser n'est pas en fait World mais qqch::World... ce qui fait que le problème est le meme dans les deux sens :/
Vincent Richard wrote:
Et forcémen, il me dit: file2.h: Core was not declared in this scope
Si je mets "class Core; class Core::Hello;" il n'aime pas non plus.
Si quelqu'un sait comment éviter cela...
Fais l'inverse. Au lieu de :
#include "file2.h" // pour class World
écris :
class World;
Dans file1.cpp, n'oublie pas le #include "file2.h" si tu accèdes à des fonctions/variables membres de la classe World...
Vincent
Vincent Richard
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je veux utiliser n'est pas en fait World mais qqch::World... ce qui fait que le problème est le meme dans les deux sens :/
Je me disais aussi... :-)
Je ne sais pas trop ce que tu veux faire (pas assez de précisions), mais tu peux peut-être t'inspirer de ce modèle :
// IAB.hpp class IA { protected:
IA() { } virtual ~IA() { }
public:
class S { }; };
class IB { protected:
IB() { } virtual ~IB() { }
public:
class S { }; };
// A.hpp #include "IAB.hpp"
class A : public IA // <-- ta classe "Hello" { public:
class S : public IA::S { }; // éventuellement
IB::S* ptr; };
// B.hpp #include "IAB.hpp"
class B : public IB // <-- ta classe "World" { public:
class S : public IB::S { }; // éventuellement
B(IA::S* ptr) { } };
Vincent
-- vmime, une bibliothèque C++ sous licence GPL pour parser et générer des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je
veux utiliser n'est pas en fait World mais qqch::World... ce qui fait
que le problème est le meme dans les deux sens :/
Je me disais aussi... :-)
Je ne sais pas trop ce que tu veux faire (pas assez de précisions), mais
tu peux peut-être t'inspirer de ce modèle :
// IAB.hpp
class IA
{
protected:
IA() { }
virtual ~IA() { }
public:
class S { };
};
class IB
{
protected:
IB() { }
virtual ~IB() { }
public:
class S { };
};
// A.hpp
#include "IAB.hpp"
class A : public IA // <-- ta classe "Hello"
{
public:
class S : public IA::S { }; // éventuellement
IB::S* ptr;
};
// B.hpp
#include "IAB.hpp"
class B : public IB // <-- ta classe "World"
{
public:
class S : public IB::S { }; // éventuellement
B(IA::S* ptr) { }
};
Vincent
--
vmime, une bibliothèque C++ sous licence GPL pour parser et générer
des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Oui en fait ce que j'ai "oublié" de préciser, c'est que la class que je veux utiliser n'est pas en fait World mais qqch::World... ce qui fait que le problème est le meme dans les deux sens :/
Je me disais aussi... :-)
Je ne sais pas trop ce que tu veux faire (pas assez de précisions), mais tu peux peut-être t'inspirer de ce modèle :
// IAB.hpp class IA { protected:
IA() { } virtual ~IA() { }
public:
class S { }; };
class IB { protected:
IB() { } virtual ~IB() { }
public:
class S { }; };
// A.hpp #include "IAB.hpp"
class A : public IA // <-- ta classe "Hello" { public:
class S : public IA::S { }; // éventuellement
IB::S* ptr; };
// B.hpp #include "IAB.hpp"
class B : public IB // <-- ta classe "World" { public:
class S : public IB::S { }; // éventuellement
B(IA::S* ptr) { } };
Vincent
-- vmime, une bibliothèque C++ sous licence GPL pour parser et générer des messages au format MIME : http://www.sourceforge.net/projects/vmime/
plindenbaum
Adrien Constant wrote in message news:<3f9a8e3d$0$27594$...
Bonjour,
voilà j'ai un petit problème de déclarations :
(...)
Et forcémen, il me dit: file2.h: Core was not declared in this scope Si je mets "class Core; class Core::Hello;" il n'aime pas non plus. Si quelqu'un sait comment éviter cela...
Salut, Tu peux declarer le nom de tes classes dans file2 sans a avoir a les definir.
Ca donne:
#ifndef _FILE2_H #define _FILE2_H
class Core; class Core::Hello;
class World { public: World(){}; World(Core::Hello *ptr){}; ~World(){}; };
#endif
Pierre
Adrien Constant <null@none.com> wrote in message news:<3f9a8e3d$0$27594$626a54ce@news.free.fr>...
Bonjour,
voilà j'ai un petit problème de déclarations :
(...)
Et forcémen, il me dit:
file2.h: Core was not declared in this scope
Si je mets "class Core; class Core::Hello;" il n'aime pas non plus.
Si quelqu'un sait comment éviter cela...
Salut,
Tu peux declarer le nom de tes classes dans file2 sans a avoir a les definir.
Ca donne:
#ifndef _FILE2_H
#define _FILE2_H
class Core;
class Core::Hello;
class World
{
public:
World(){};
World(Core::Hello *ptr){};
~World(){};
};
Adrien Constant wrote in message news:<3f9a8e3d$0$27594$...
Bonjour,
voilà j'ai un petit problème de déclarations :
(...)
Et forcémen, il me dit: file2.h: Core was not declared in this scope Si je mets "class Core; class Core::Hello;" il n'aime pas non plus. Si quelqu'un sait comment éviter cela...
Salut, Tu peux declarer le nom de tes classes dans file2 sans a avoir a les definir.
Ca donne:
#ifndef _FILE2_H #define _FILE2_H
class Core; class Core::Hello;
class World { public: World(){}; World(Core::Hello *ptr){}; ~World(){}; };