Bonjour,

J'ai un petit probl�me de compilation:

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
Project   : OpenGL Application
Compiler  : MinGW (called directly)
Directory : F:\Programmation\Olala project\
--------------------------------------------------------------------------------
Switching to target: default
Linking executable: OlalaProject.exe
.objs\important.o:important.cpp:(.text+0x1a3): undefined reference to `actualisation::instance'
.objs\important.o:important.cpp:(.text+0x20a): undefined reference to `actualisation::instance'
.objs\important.o:important.cpp:(.text+0x2c9): undefined reference to `actualisation::instance'
.objs\important.o:important.cpp:(.text+0x330): undefined reference to `actualisation::instance'
.objs\important.o:important.cpp:(.text+0x335): undefined reference to `actualisation::instance'
.objs\important.o:important.cpp:(.text+0x35a): more undefined references to `actualisation::instance' follow
.objs\important.o:important.cpp:(.text+0x40b): undefined reference to `ecran::instance'
.objs\important.o:important.cpp:(.text+0x480): undefined reference to `ecran::instance'
.objs\important.o:important.cpp:(.text+0x4c8): undefined reference to `ecran::instance'
.objs\important.o:important.cpp:(.text+0x4d6): undefined reference to `ecran::instance'
.objs\important.o:important.cpp:(.text+0x4de): undefined reference to `ecran::instance'
.objs\important.o:important.cpp:(.text+0x503): more undefined references to `ecran::instance' follow
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
Bref c'est tr�s joyeux. Voici le code qui va avec, d'abord important.h:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef IMPORTANT
#define IMPORTANT
 
 
#include <iostream>
#include <string>
#include <time.h>
#include <windows.h>
#include <GL/glut.h>
 
#define MENU 0
#define JEU 1
 
#define SON 0
#define RESEAU 1
 
class dessin
{
 
};
 
 
class actualisation //singleton
{
    public:
    void lancer();
    static void creer();
    void setRefresh_ms(int x);
    int getRefresh_ms();
    void setRefresh_rate(int x);
    int getRefresh_rate();
    static actualisation* getInstance();
    static void deleteInstance();
 
    protected:
    actualisation();
    ~actualisation();
 
    private:
    int refresh_ms;
    int refresh_rate;
    static actualisation* instance;
};
 
//actualisation* actualisation::instance = NULL;
 
 
class ecran //singleton
{
    public:
    void actualiser();
    static void creer(int x, int y);
    void setLargeurHauteur(int x, int y);
    int getLargeur();
    int getHauteur();
    static ecran* getInstance();
    void deleteInstance();
 
    protected:
    ecran();
    ecran(long x, long y);
    ~ecran();
 
    private:
    static ecran* instance;
    int largeur;
    int hauteur;
};
 
//ecran* ecran::instance = NULL;
 
void setLargeurHauteur(int x, int y);
void lancer_actualisation();
Puis important.cpp:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "important.h"
 
void actualisation::lancer(void){}
 
void actualisation::creer(void)
{
    if(instance == NULL)
        {
            instance = new actualisation;
        }
}
 
void actualisation::setRefresh_ms(int x)
{
    refresh_ms = x;
    refresh_rate = 1000/refresh_ms;
}
 
int actualisation::getRefresh_ms(void)
{
    return refresh_ms;
}
 
void actualisation::setRefresh_rate(int x)
{
    refresh_rate = x;
    refresh_ms = 1000/refresh_rate;
}
 
int actualisation::getRefresh_rate(void)
{
    return refresh_rate;
}
 
actualisation* actualisation::getInstance(void)
{
    if(instance == NULL)
    {
        instance = new actualisation();
    }
 
    return instance;
}
 
void actualisation::deleteInstance(void)
{
    if(instance != NULL)
    {
        delete instance;
        instance = NULL;
    }
}
 
actualisation::actualisation(void)
{
    refresh_ms = 20;
    refresh_rate = 50;
 
 
}
 
actualisation::~actualisation(void){}
 
void ecran::actualiser(void)
{
 
}
 
void ecran::creer(int x, int y)
{
    if(instance == NULL)
    {
        instance = new ecran(x,y);
    }
}
 
void ecran::setLargeurHauteur(int x, int y)
{
    largeur = x;
    hauteur = y;
}
 
int ecran::getLargeur()
{
    return largeur;
}
 
int ecran::getHauteur()
{
    return hauteur;
}
 
ecran* ecran::getInstance()
{
    return instance;
}
 
void ecran::deleteInstance()
{
    if(instance != NULL)
    {
        delete instance;
        instance = NULL;
    }
}
 
ecran::ecran(){}
 
ecran::ecran(long x, long y): largeur(x), hauteur(y){}
 
ecran::~ecran(){}
 
void setLargeurHauteur(int x, int y)
{
    static ecran* instance = ecran::getInstance();
    instance->setLargeurHauteur(x,y);
}
 
void lancer_actualisation(void)
{
    static actualisation* pointeur = actualisation::getInstance();
    pointeur->lancer();
}
J'utilise pour compiler MinGW (derni�re version ou presque) et Code::Blocks (pareil) pour �crire le code.

Pour r�pondre rapidement au critiques, oui je suis un boulet mais je sais lire la doc! Juste que je sais pas la comprendre:

http://www.mingw.org/MinGWiki/index....inedReferences

Je ne sais m�me pas si �a traite bien de mon probl�me... Pour ce qui concerne le code, ce sont des classes (pas finies d'ailleurs, certaines fonctions sont encore vides �galement) Singleton (du moins j'ai essayer de les faire comme �a). D'ailleurs justement le probl�me vient de ces pointeurs pour stocker l'instance (pointer serait plus correct mais bon). Pour info vite fait, ce code a pour but d'�tre lanc� par GLUT automatiquement (callback) qui ne veut pas de fonctions dans une classe en argument et donc j'ai fait des fonctions qui ne font que rappeller les bonnes fonctions dans les classes.

Merci d'avance si vous savez ce que je dois faire (ou plut�t ne pas faire pour �viter des erreurs comme l�).