Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie
complémentaire d'un projet perso.
Voici un exemple de la manière dont je déclare mes bidules :
// fichier Stuff2D.h
namespace SDLWidgets
{
class Stuff2D
{
public:
Stuff2D(void);
~Stuff2D(void);
virtual bool load(std::string fileName) = 0;
[SNIP]
};
}
// fichier Stuff2D.cpp
namespace SDLWidgets
{
Stuff2D::Stuff2D(void)
{
}
Stuff2D::~Stuff2D(void)
{
}
[SNIP]
}
Ensuite, je dérive de Stuff2D une classe nommée Sprite2D, et les
directives namespace sont identiques à celles ci dessus
// fichier main.cpp
#include "../SDLWidgets/src/Sprite2D.h"
using namespace SDLWidgets;
int main(int argc, char *argv[])
{
Sprite2D* sp1 = new Sprite2D();
return 0;
}
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas
résolu.
Si je déclare sp1 comme
Sprite2D sp1;
alors le linker se plaint aussi du fait qu'il n'a pas trouvé de
destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme
sp1->load("sprite.bmp");
ne pose quand à lui aucun problème !!!
Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose
que c'est en relation avec les espaces de nom ?!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zouplaz
Juste pour info complémentaire, l'erreur est exactement celle ci : testWidgets error LNK2019: symbole externe non résolu "public: __thiscall SDLWidgets::Sprite2D::Sprite2D(void)" (??@@)
Juste pour info complémentaire, l'erreur est exactement celle ci :
testWidgets error LNK2019: symbole externe non résolu "public: __thiscall
SDLWidgets::Sprite2D::Sprite2D(void)" (??0Sprite2D@SDLWidgets@@QAE@XZ)
Juste pour info complémentaire, l'erreur est exactement celle ci : testWidgets error LNK2019: symbole externe non résolu "public: __thiscall SDLWidgets::Sprite2D::Sprite2D(void)" (??@@)
Alexandre
"Zouplaz" a écrit dans le message de news:
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie complémentaire d'un projet perso.
Voici un exemple de la manière dont je déclare mes bidules :
// fichier Stuff2D.h namespace SDLWidgets {
class Stuff2D { public: Stuff2D(void); ~Stuff2D(void);
virtual bool load(std::string fileName) = 0;
[SNIP] }; }
// fichier Stuff2D.cpp namespace SDLWidgets {
Stuff2D::Stuff2D(void) { }
Stuff2D::~Stuff2D(void) { }
[SNIP]
}
Ensuite, je dérive de Stuff2D une classe nommée Sprite2D, et les directives namespace sont identiques à celles ci dessus
// fichier main.cpp
#include "../SDLWidgets/src/Sprite2D.h" using namespace SDLWidgets;
int main(int argc, char *argv[]) { Sprite2D* sp1 = new Sprite2D(); return 0; }
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas résolu. Si je déclare sp1 comme Sprite2D sp1; alors le linker se plaint aussi du fait qu'il n'a pas trouvé de destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme sp1->load("sprite.bmp"); ne pose quand à lui aucun problème !!! Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Comment est déclaré ton constructeur de Sprite2D ?
"Zouplaz" <pouet@pouet.com> a écrit dans le message de
news:Xns94349432FE193Zoupla@213.228.0.4...
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie
complémentaire d'un projet perso.
Voici un exemple de la manière dont je déclare mes bidules :
// fichier Stuff2D.h
namespace SDLWidgets
{
class Stuff2D
{
public:
Stuff2D(void);
~Stuff2D(void);
virtual bool load(std::string fileName) = 0;
[SNIP]
};
}
// fichier Stuff2D.cpp
namespace SDLWidgets
{
Stuff2D::Stuff2D(void)
{
}
Stuff2D::~Stuff2D(void)
{
}
[SNIP]
}
Ensuite, je dérive de Stuff2D une classe nommée Sprite2D, et les
directives namespace sont identiques à celles ci dessus
// fichier main.cpp
#include "../SDLWidgets/src/Sprite2D.h"
using namespace SDLWidgets;
int main(int argc, char *argv[])
{
Sprite2D* sp1 = new Sprite2D();
return 0;
}
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas
résolu.
Si je déclare sp1 comme
Sprite2D sp1;
alors le linker se plaint aussi du fait qu'il n'a pas trouvé de
destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme
sp1->load("sprite.bmp");
ne pose quand à lui aucun problème !!!
Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose
que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Comment est déclaré ton constructeur de Sprite2D ?
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie complémentaire d'un projet perso.
Voici un exemple de la manière dont je déclare mes bidules :
// fichier Stuff2D.h namespace SDLWidgets {
class Stuff2D { public: Stuff2D(void); ~Stuff2D(void);
virtual bool load(std::string fileName) = 0;
[SNIP] }; }
// fichier Stuff2D.cpp namespace SDLWidgets {
Stuff2D::Stuff2D(void) { }
Stuff2D::~Stuff2D(void) { }
[SNIP]
}
Ensuite, je dérive de Stuff2D une classe nommée Sprite2D, et les directives namespace sont identiques à celles ci dessus
// fichier main.cpp
#include "../SDLWidgets/src/Sprite2D.h" using namespace SDLWidgets;
int main(int argc, char *argv[]) { Sprite2D* sp1 = new Sprite2D(); return 0; }
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas résolu. Si je déclare sp1 comme Sprite2D sp1; alors le linker se plaint aussi du fait qu'il n'a pas trouvé de destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme sp1->load("sprite.bmp"); ne pose quand à lui aucun problème !!! Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Comment est déclaré ton constructeur de Sprite2D ?
Zouplaz
Alexandre - :
Comment est déclaré ton constructeur de Sprite2D ?
Comme ceci :
public: Sprite2D(void); ~Sprite2D(void);
J'ai également le même problème avec une classe statique ne dérivant de rien. Même erreur...
Alexandre - alex.g@netcourrier.com :
Comment est déclaré ton constructeur de Sprite2D ?
Comme ceci :
public:
Sprite2D(void);
~Sprite2D(void);
J'ai également le même problème avec une classe statique ne dérivant de
rien. Même erreur...
Comment est déclaré ton constructeur de Sprite2D ?
Comme ceci :
public: Sprite2D(void); ~Sprite2D(void);
J'ai également le même problème avec une classe statique ne dérivant de rien. Même erreur...
Benoit Rousseau
Zouplaz wrote:
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie complémentaire d'un projet perso.
[...]
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas résolu. Si je déclare sp1 comme Sprite2D sp1; alors le linker se plaint aussi du fait qu'il n'a pas trouvé de destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme sp1->load("sprite.bmp"); ne pose quand à lui aucun problème !!! Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je pense. Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en une librairie ? Est ce que tu spécifies bien à ton compilateur de lier ton programme avec cette librairie ?
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Zouplaz wrote:
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie
complémentaire d'un projet perso.
[...]
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas
résolu.
Si je déclare sp1 comme
Sprite2D sp1;
alors le linker se plaint aussi du fait qu'il n'a pas trouvé de
destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme
sp1->load("sprite.bmp");
ne pose quand à lui aucun problème !!!
Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose
que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je pense.
Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en une
librairie ? Est ce que tu spécifies bien à ton compilateur de lier ton
programme avec cette librairie ?
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
Bonjour, j'ai décidé d'utiliser un namespace pour une petite librarie complémentaire d'un projet perso.
[...]
ICI PROBLEME : le linker me dit que le constructeur de Sprite2D n'est pas résolu. Si je déclare sp1 comme Sprite2D sp1; alors le linker se plaint aussi du fait qu'il n'a pas trouvé de destructeur.
Enfin, ce que je ne comprends pas c'est qu'un appel comme sp1->load("sprite.bmp"); ne pose quand à lui aucun problème !!! Que ce passe-t-il avec les constructeurs et destructeurs ?? Je suppose que c'est en relation avec les espaces de nom ?!
Si vous avez une solution, merci.
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je pense. Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en une librairie ? Est ce que tu spécifies bien à ton compilateur de lier ton programme avec cette librairie ?
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Fabien LE LEZ
On 15 Nov 2003 16:57:39 GMT, Zouplaz wrote:
Sprite2D(void); ~Sprite2D(void);
Rien à voir avec ton problème, mais enlève le "void", ça fera plus propre (et moins C).
-- ;-)
On 15 Nov 2003 16:57:39 GMT, Zouplaz <pouet@pouet.com> wrote:
Sprite2D(void);
~Sprite2D(void);
Rien à voir avec ton problème, mais enlève le "void", ça fera plus
propre (et moins C).
Rien à voir avec ton problème, mais enlève le "void", ça fera plus propre (et moins C).
-- ;-)
Zouplaz
Benoit Rousseau - :
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je pense. Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en une librairie ? Est ce que tu spécifies bien à ton compilateur de lier ton programme avec cette librairie ?
Exact, ne croyais que c'était lié à l'utilisation des namespace mais pas du tout. C'est effectivement un problème avec le linker. Désolé !
Benoit Rousseau - not.provided@no.spam :
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je
pense. Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en
une librairie ? Est ce que tu spécifies bien à ton compilateur de lier
ton programme avec cette librairie ?
Exact, ne croyais que c'était lié à l'utilisation des namespace mais pas du
tout. C'est effectivement un problème avec le linker. Désolé !
Ce n'est peut être pas un problème de "C++" mais plutôt de linker, je pense. Est ce que tes Stuff2D.cc et Sprite2D.cc sont bien compilés en une librairie ? Est ce que tu spécifies bien à ton compilateur de lier ton programme avec cette librairie ?
Exact, ne croyais que c'était lié à l'utilisation des namespace mais pas du tout. C'est effectivement un problème avec le linker. Désolé !