Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: ProcessusX le Octobre 06, 2018, 09:50:30 pm

Titre: [RESOLU] Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 06, 2018, 09:50:30 pm
Ce que je vais vous demandez ?  peut être déj?  eut une réponse (et dans ce cas excusez moi, j'avais la flemme  ;D de parcourir les 40 pages de questions).
Mon problème est que j'ai tout installé, rajouté les indications pour Visual Studio MAIS, quand j'ai inclus le fichier <SFML/Graphics.hpp> pour faire une fenêtre de base, lors de la compilation, VS me donne PLEIN :o d'erreur dans le dossier Rect.inl.
Merci d'avance  :)

Le code de rect.inl:

template <typename T>
Rect<T>::Rect() :
left  (0),
top   (0),
width (0),
height(0)
{

}

template <typename T>
Rect<T>::Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight) :
left  (rectLeft),
top   (rectTop),
width (rectWidth),
height(rectHeight)
{

}

template <typename T>
Rect<T>::Rect(const Vector2<T>& position, const Vector2<T>& size) :
left  (position.x),
top   (position.y),
width (size.x),
height(size.y)
{

}

template <typename T>
template <typename U>
Rect<T>::Rect(const Rect<U>& rectangle) :
left  (static_cast<T>(rectangle.left)),
top   (static_cast<T>(rectangle.top)),
width (static_cast<T>(rectangle.width)),
height(static_cast<T>(rectangle.height))
{
}

template <typename T>
bool Rect<T>::contains(T x, T y) const
{
    T minX = std::min(left, static_cast<T>(left + width));
    T maxX = std::max(left, static_cast<T>(left + width));
    T minY = std::min(top, static_cast<T>(top + height));
    T maxY = std::max(top, static_cast<T>(top + height));

    return (x >= minX) && (x < maxX) && (y >= minY) && (y < maxY);
}

template <typename T>
bool Rect<T>::contains(const Vector2<T>& point) const
{
    return contains(point.x, point.y);
}

template <typename T>
bool Rect<T>::intersects(const Rect<T>& rectangle) const
{
    Rect<T> intersection;
    return intersects(rectangle, intersection);
}

template <typename T>
bool Rect<T>::intersects(const Rect<T>& rectangle, Rect<T>& intersection) const
{
    T r1MinX = std::min(left, static_cast<T>(left + width));
    T r1MaxX = std::max(left, static_cast<T>(left + width));
    T r1MinY = std::min(top, static_cast<T>(top + height));
    T r1MaxY = std::max(top, static_cast<T>(top + height));

    T r2MinX = std::min(rectangle.left, static_cast<T>(rectangle.left + rectangle.width));
    T r2MaxX = std::max(rectangle.left, static_cast<T>(rectangle.left + rectangle.width));
    T r2MinY = std::min(rectangle.top, static_cast<T>(rectangle.top + rectangle.height));
    T r2MaxY = std::max(rectangle.top, static_cast<T>(rectangle.top + rectangle.height));

    T interLeft   = std::max(r1MinX, r2MinX);
    T interTop    = std::max(r1MinY, r2MinY);
    T interRight  = std::min(r1MaxX, r2MaxX);
    T interBottom = std::min(r1MaxY, r2MaxY);

    if ((interLeft < interRight) && (interTop < interBottom))
    {
        intersection = Rect<T>(interLeft, interTop, interRight - interLeft, interBottom - interTop);
        return true;
    }
    else
    {
        intersection = Rect<T>(0, 0, 0, 0);
        return false;
    }
}

template <typename T>
inline bool operator ==(const Rect<T>& left, const Rect<T>& right)
{
    return (left.left == right.left) && (left.width == right.width) &&
           (left.top == right.top) && (left.height == right.height);
}

template <typename T>
inline bool operator !=(const Rect<T>& left, const Rect<T>& right)
{
    return !(left == right);
}

 
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 07, 2018, 08:33:08 am
Le code de rect.inl on le connaît... Par contre les erreurs que tu as eues, non.
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 07, 2018, 03:03:29 pm
Effectivement les erreurs : ;D
Rect n'est pas un modèle (lignes 2, 14, 26, 39, 50, 66, 74, 83, 121, 130) en gros tous les "Rect"
Vector2 n'est pas un modèle (lignes 26, 66, ) tous les "Vector2"
Qualificateur de type non autorisé sur une fonction non membre (lignes 50, 66, 74, 83) c'est des "const"
Un opérateur non membre requiert un paramètre avec un type classe ou enum (lignes 121 et 130) c'est des "operator"
'(' : jeton non conforme ?  droite de '::' (lignes 55 et 88)

Merci d'avance  :)
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 07, 2018, 08:18:54 pm
Est-ce que tu inclus <Windows.h>, directement ou indirectement, dans ton code ?
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 07, 2018, 08:22:07 pm
Je ne l'ai pas inclus. C'est peut etre ça le problème... Je pensais qu'on pouvait se limiter ?  <SFML/Graphics>
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 07, 2018, 09:57:33 pm
Non, je voulais dire que ça aurait pu être la source du problème si tu l'avais fait.
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 08, 2018, 01:19:38 am
J'uttilise la derniere version de Visual Studio Community. Faut il une autre version?
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 08, 2018, 10:35:06 am
Est-ce que ce code produit les mêmes erreurs ?

#include <SFML/Graphics.hpp>

int main()
{
    sf::IntRect r;
    return 0;
}
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 08, 2018, 03:20:15 pm
Non, toujours les memes erreurs...
Vous utilisez quel version de VS pour la SFML?
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 08, 2018, 06:15:34 pm
Tu peux me copier-coller la sortie exacte du compilateur quand tu compiles ce code minimal ?

La version de VS n'a rien a voir.
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 08, 2018, 10:31:09 pm
Ça me met:
C2589   '(' : jeton non conforme ?  droite de '::'      jeu-collab      rect.inl      55
C2589   '(' : jeton non conforme ?  droite de '::'      jeu-collab      rect.inl      88

Donc la j'ouvre le fichier rect.inl et la 27 'erreurs.
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 09, 2018, 08:42:39 am
Et ce même code minimal, en incluant juste SFML/Graphics/Rect.hpp au lieu de Graphics.hpp ?
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 09, 2018, 01:09:45 pm
Non meme avec ça, ça ne marche pas...
VS me dit toujours les erreurs dans Rect.inl...
Y a t-il une solution?
Pourrais-je avoir votre didacticiel complet de l'installation de la SFML? Juste au cas ou le tutoriel en ligne serais trop vieux...

Merci d'avance :)
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 09, 2018, 01:15:40 pm
A mon avis tu t'es trompé...

C'est bien ça tout seul que tu compiles et qui te donne ces erreurs, tu en es certain a 100% ??

#include <SFML/Graphics/Rect.hpp>

int main()
{
    sf::IntRect r;
    return 0;
}
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 09, 2018, 08:11:44 pm
Oui ?  100%, mais en fait c'est le fichier rect.inl qui est plein d' erreurs.
Il y a aussi ça sur le site de la SFML :

"Depuis SFML 2.2, lors d'une liaison statique, il faut aussi lier toutes les dépendances de SFML. Par exemple : si vous liez ?  sfml-window-s.lib ou sfml-window-s-d.lib sur Windows, il faudra aussi lier ?  winmm.lib, gdi32.lib et opengl32.lib. Parfois ces bibliothèques seront listées sous "Inherited values" mais les ajouter une fois de plus ne devrait pas poser de problème."

Je ne l'ai pas fait car je ne c'est pas ce qu'il faut faire.
Titre: Re: Erreurs dans rect.inl
Posté par: Laurent le Octobre 09, 2018, 08:47:29 pm
C'est sûr que tu as fait une bourde, mais difficile de dire laquelle.

Quelle version de SFML utilises-tu ? Quel version du compilateur ?

Tu parlais de 40 erreurs, mais tu n'en as collé que 2, c'est possible d'avoir le tout ?
Titre: [RESOLU] Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 11, 2018, 02:36:50 am
C'est bon. Les 25 premières erreurs sont résolues, il fallait juste mettre "sf::" devant les "Vector2" et "Rect".
Pour le reste je devais retirer les "std::".

Merci quand même de votre aide et patience!  :)
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: Laurent le Octobre 11, 2018, 08:07:29 am
Dans le code source de SFML ou dans le tien ?
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 12, 2018, 12:55:32 am
J'ai juste ouvert le fichier Rect.inl et corrigé les erreurs.
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: Laurent le Octobre 12, 2018, 08:26:48 am
Il n'y a pas d'erreur dans Rect.inl, il y a une bourde dans la configuration de ton projet mais tu n'as pas l'air de vouloir trouver la source de cette erreur.
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 12, 2018, 01:17:47 pm
Ce n'est pas que je ne veux pas, car je ne sais pas d'où ça peux venir. Je ne savais tellement pas que j'ai meme réinstallé Visual Studio pour voir si c'était que j'avais choisi un mauvais package!
Pour Rect.inl, au départ j'essayais d'inclure <SFML/Graphics/Rect.hpp>, mais ça ne donnait rien. Et l?  j'ai porter attention au "sf::". Je ne serais comment l'expliquer, mais d'après moi, il n'y avait pas besoin de "sf::", car d'après moi cet un namespace.

Maintenant, je ne suis pas majeur, donc j'ai pas fait d'étude ?  l'université donc j'ai pas de MASTER en programmation, je suis juste passionné avec des connaissances, donc je ne peux pas égaler votre niveau en terme de programmation, de résolution d'erreurs et de trouvage de la source des erreurs.
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: Laurent le Octobre 12, 2018, 01:48:46 pm
Tout ce que je te demande c'est de répondre a mes questions précisément et exhaustivement (j'ai vu un paquet de problèmes et je vois a peu près ce qui peut causer ce genre d'erreurs) plutôt que d'essayer de "corriger" tout seul au feeling un fichier qui bien entendu ne comporte pas vraiment 50 erreurs de syntaxe ;)

Donc :

Citer
Quelle version de SFML utilises-tu ? Quel version du compilateur ?

Tu parlais de 40 erreurs, mais tu n'en as collé que 2, c'est possible d'avoir le tout ?

Merci.
Titre: Re: Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 12, 2018, 10:34:16 pm
Le seul 40, c'est les 40 pages de questions du forum/graphique.
Je parlais de 27 erreurs.
J'uttilise la dernière version de Visual Studio et la dernière version de la SFML.
Merci quand meme  :D

Effectivement les erreurs : ;D
Rect n'est pas un modèle (lignes 2, 14, 26, 39, 50, 66, 74, 83, 121, 130) en gros tous les "Rect"
Vector2 n'est pas un modèle (lignes 26, 66, ) tous les "Vector2"
Qualificateur de type non autorisé sur une fonction non membre (lignes 50, 66, 74, 83) c'est des "const"
Un opérateur non membre requiert un paramètre avec un type classe ou enum (lignes 121 et 130) c'est des "operator"
'(' : jeton non conforme ?  droite de '::' (lignes 55 et 88)

Merci d'avance  :)
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: Laurent le Octobre 13, 2018, 09:37:27 am
C'est pas possible que juste tu copies - colles la sortie du compilateur ? Comme tu l'as fait précédemment, mais avec la totalité du contenu ?
Titre: Re: [RESOLU] Erreurs dans rect.inl
Posté par: ProcessusX le Octobre 14, 2018, 12:23:19 am
Voici une vidéo montrant mon linkage et les erreurs:
https://drive.google.com/file/d/1XoKJK0Z6shara1MHXAqF67sglTH0KqtM/view?usp=sharing

Merci