problème de pointeur pour le prototype d'une methode
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:
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:
Code:
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 |
triangle.cpp:
Code:
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;
} |
et pour finir les erreurs :
Code:
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);
^ |
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.
Bonne Journée à tous.