[Resolved]Probleme reference et pointeur de Singleton
Hello,
Voila j'ai appris c++ sur le tas donc je suis assez naze, je l utilise en mixant c et java :p
j'ai découvert y a pas longtemps les références, j'aimerai pouvoir instancier un objet par référence sans avoir a créer des objects en dehors du constructeur pour les paramètres
voici deux classes simplifiées
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
class Node
{
public :
Node(std::string const &name, Vector3f &position) : _name(name), _position(position){}
private:
std::string _name;
Vector3f _position;
};
class Camera : public Node
{
public:
Camera(std::string const & name, Vector3f position, Vector3f target) :
Node(name,positon), _target(target) {}
private:
Vector3f _target;
}; |
voici ce que je dois faire
Code:
1 2 3 4 5 6 7
|
Vector3f u(0.0f,0.0f,1.0f);
Vector3f v(0.0f,0.0f,0.0f);
std::string s="camera";
Camera * cam= new Camera(s,u,v); |
j'aimerai le faire en une ligne mais je ne trouve pas
Code:
1 2
|
Camera * cam = new Camera ("camera", Vector3f (0.0f,0.0f,1.0f),Vector3f (0.0f,0.0f,0.0f)); |
j'ai remarqué que si j'enlève dans l'implémentation du constructeur de camera
les & ça passe. J'aimerai aussi savoir la durée de validité des références
par exemple si je fais le code précédent dans une méthode d'une classe object
et que la classe camera est un attribut de la classe object est-ce que l'initialisation reste valide ?
ex:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class MonObject
{
public:
MonObject(){
Vector3f u(0.0f,0.0f,1.0f);
Vector3f v(0.0f,0.0f,0.0f);
std::string s="camera";
Camera * cam= new Camera(s,u,v);
}
void dosomething(){
// est ce que cam est correctement instanciée
}
private:
Camera * cam;
}; |
et puis une petite dernière :p
J'ai une classe qui est un singleton
j'y accède comme ça, mais je ne pense pas que c'est la bonne façon
Code:
1 2 3 4
|
Singleton s;
s.getinstance();
s.dosometing(); |
J'ai essayé en utilisant un pointeur mais je n'arrive pas a lui faire obtenir
l'instance du singleton
Code:
1 2 3 4 5 6
|
// ne marche pas
Singleton * s=NULL;
s->getinstance();
ou
s = Singleton::getinstance(); |
Y a aussi un truc bizarre avec ma classe singleton
j'ai une classe qui en hérite
momManager : public singleton
quand je fais :
Code:
1 2
|
monManager.destroy() <- methode de singleton pour delet le pointeur d'instance |
et si dans mon manager j'ai mis du code dans le destructeur
ex
Code:
1 2 3 4
|
~MonManager(){
delete unpointer;
} |
ca crash l'appli
donc je fais un truc dégueu du genre créer une méthode freeResources pour delete mes pointeurs avant d'appeler le destroy
Voila je suis sur que c'est des questions triviales, mais j'ai perdu pas mal de temps à chercher partout et tester des solutions qui ne marche pas donc je retourner prog en java en attendant avec impatience vos réponses.
Merci d'avance