Bonjour à tous,
Cela fait longtemps que je n'ai pas codé en C++ (si on considère que j'ai "commencé" et pour m'y coller je me lance avec la librairie SFML 2.1).
Pour info je suis sur Ubuntu 13.10 (oui il faut que j'update mais là tout de suite c'est pas possible) et j'utilise g++-4.8
Mon problème et le suivant :
J'ai d'abord, pour tester, tout mit dans le "main.cpp" pour tester mon code et TOUT fonctionnait très bien.
Puis pour faire plus propre j'ai séparé ma classe du main en créant un .cpp et un .h (Normal me direz vous)
à partir de là j'obtiens l'erreur suivante : "triangle.h:8:24: error: expected ‘)’ before ‘*’ token", voici le prototype Triangle::Triangle(s_Triangle* t);
Pas moyen de comprendre pourquoi le compilateur me dit ça.
voici mon code pour plus de détails, ainsi que les erreurs de compilations :
main.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 #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h> /* malloc, free, rand */ #include <SFML/Graphics.hpp> #include "./graphic/geometric/classe/triangle.h" struct s_Triangle { // Toutes les meusures sont en px uint width; uint height; uint posX; uint posY; sf::Color color[3]; /*int rotation;*/ }; int main() { // Creation d'une fenêtre sf::RenderWindow window(sf::VideoMode(800, 600), "SFML works!"); // VSync window.setVerticalSyncEnabled(true); // Déplacement de la fenêtre window.setPosition(sf::Vector2i(10,50)); // définition d'un triangle s_Triangle *s_triangle = new s_Triangle; s_triangle->width = 100; s_triangle->height = 50; s_triangle->posX = 10; s_triangle->posY = 25; s_triangle->color[0] = sf::Color::Red; s_triangle->color[1] = sf::Color::Blue; s_triangle->color[2] = sf::Color::Green; Triangle* triangle = new Triangle(s_triangle); delete[] s_triangle; while (window.isOpen()) { // Class d'Events sf::Event event; //Events relatifs à la fenêtre while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } // SANS C'EST DEUX FUNCTIONS LA FENÊTRE RÉAGIT TRÈS MAL //nettoyage du contenu de la fenêtre window.clear(); window.draw(triangle->getTriangle()); //affichage du contenu window.display(); } return 0; }
triangle.h:
triangle.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 #ifndef __TRIANGLE_H__ #define __TRIANGLE_H__ class Triangle { public: Triangle(s_Triangle* t); ~Triangle(); sf::VertexArray getTriangle(); private: sf::VertexArray triangle; }; #endif
et pour finir les erreurs :
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 #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h> #include "./triangle.h" Triangle::Triangle(s_Triangle* t) { sf::VertexArray triangle2(sf::Triangles, 3); triangle = triangle2; triangle[0].position = sf::Vector2f(t->posY + t->height, t->posX ); triangle[1].position = sf::Vector2f(t->posY, t->posX ); triangle[2].position = sf::Vector2f(t->posY, t->posX + t->width ); for (int i = 0; i < 3; ++i) { triangle[i].color = t->color[i]; } } sf::VertexArray Triangle::getTriangle(){ return triangle; }
Enfin voilà, si quelqu'un peut m'aider avec ça je lui en serait très reconnaissant, parce que la je sèche complètement.
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 In file included from ./main.cpp:4:0: ././graphic/geometric/classe/triangle.h:8:24: error: expected ) before * token Triangle(s_Triangle* t); ^ ./main.cpp: In function int main(): ./main.cpp:38:49: error: no matching function for call to Triangle::Triangle(s_Triangle*&) Triangle* triangle = new Triangle(s_triangle); ^ ./main.cpp:38:49: note: candidates are: In file included from ./main.cpp:4:0: ././graphic/geometric/classe/triangle.h:5:7: note: Triangle::Triangle() class Triangle ^ ././graphic/geometric/classe/triangle.h:5:7: note: candidate expects 0 arguments, 1 provided ././graphic/geometric/classe/triangle.h:5:7: note: Triangle::Triangle(const Triangle&) ././graphic/geometric/classe/triangle.h:5:7: note: no known conversion for argument 1 from s_Triangle* to const Triangle& In file included from ./graphic/geometric/classe/triangle.cpp:3:0: ./graphic/geometric/classe/./triangle.h:8:24: error: expected ) before * token Triangle(s_Triangle* t); ^
Bonne Journée à tous.
Partager