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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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