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:
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
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
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 : 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);
                        ^
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.