Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [RÉSOLUT] Objet membre erreurs , C3646 & C4430.  (Lu 3169 fois)

0 Membres et 1 Invité sur ce sujet

clems30

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
[RÉSOLUT] Objet membre erreurs , C3646 & C4430.
« le: Novembre 12, 2016, 06:03:16 pm »
Bonjour a tous.
Je fais actuellement un projet d'étude (SFML) et je rencontre un problème qui commence de plus en plus a me décourager.   :'(

Dans ce projet , l'utilisateur contrôle un personnage (chasseur) qui doit tirer sur un/des loups qui sont généré.
Le Problème que je rencontre est particulier :
Dans ma classe Personnage , j'ai ajouté un objet membre issu de la classe C_FLECHE qui permettais de tirer des flèches à l'aide d'une méthode tir depuis la position du personnage jusqu'à l'extrémité de la texture de fond.

TOUT FONCTIONNAIT bien , j'ai donc continué a développer la collision du loup mais depuis hier , quand j'ajoute un objet membre à une classe je constate toujours des erreurs,
pourtant je ne crois pas avoir modifié mes constructeurs et le programme fonctionne très bien à partir du moment ou je n'ajoute pas d'objet membre (même les méthodes de ces objets).

je me retrouve avec les erreurs :

C3646 spécificateur de substitution inconnu
C4430 spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut


Je peux vous fournir n'importe quel partie de mon code , Merci pour les réponse futur et désolé pour les fautes d'orthographes si il y en a.  ;)

SOUS VISUAL STUDIO 2015:

#ifndef C_PERSONNAGE_H
#define C_PERSONNAGE_H
#include "C_ENTITE.h"
#include "C_Fleche.h"
#include "C_LOUP.h"


#include <SFML\Graphics.hpp>
#include <SFML/OpenGL.hpp> // ajout de open gl cour 3

using namespace std;
using namespace sf;


class C_PERSONNAGE : protected C_ENTITE {
public:
        friend void Gestion_Entrees();
        friend class C_LOUP;


        C_PERSONNAGE();
        C_PERSONNAGE(char* P_Chemin_Texture, int P_Position_X, int P_Position_Y);

        C_Fleche La_Fleche; // ERREUR SIGNALE ICI

        using C_ENTITE::Retourne_Sprit;
        inline Sprite Retourne_Sprit();

        using C_ENTITE::Debug_Affiche_Donnes;
        inline void Debug_Affiche_Donnes();

        bool Tir();
        bool Deplacement(bool P_Destination);
       
       

       

protected:
       
        int Points_De_Vie;


        bool Positionnement;
        int Position_X;
        int Position_Y;


};

#endif // !C_PERSONNAGE_H
 


C_FLECHE.h :

#ifndef C_FLECHE_H
#define C_FLECHE_H


#include <SFML\Graphics.hpp>
#include <SFML/OpenGL.hpp>

#include "C_LOUP.h"
#include "C_PERSONNAGE.h"

using namespace std;
using namespace sf;

class C_Fleche {

public:
        C_Fleche();
        C_Fleche(int P_Postion_X, int P_Postion_Y);

        inline Sprite Retourne_Sprite();
        inline void Positionne_Toi();
        inline void Positionne_Toi(int P_Positon_X);
        inline void Disparait();

        inline void Propulsion(bool P_Sens_Tir,int P_Postion);
       


        int Position_X;
        int Position_Y;


protected:


        bool Position_Fleche;
        const int Degat;


        Sprite Sprite_Fleche;
        Texture Texture_Fleche;


};

suivit des methodes inline ...
#endif // !C_ENTITE_H

C_FLECHE.cpp :
#include <SFML\Graphics.hpp>
#include <SFML/OpenGL.hpp>
#include <iostream>

#include "C_ENTITE.h"
#include "C_PERSONNAGE.h"
#include "C_LOUP.h"
#include "C_Fleche.h"
using namespace std;
using namespace sf;


C_Fleche::C_Fleche()
        :Degat(50),Position_X(690), Position_Y(1500), Position_Fleche(true)
{
       

        if (!Texture_Fleche.loadFromFile("C:/Users/user/Documents/Visual Projet SFML/Textures/Fleche.psd"))
        {
                cout << "Erreur durant le chargement de l'image Objet" << endl;
                cout << __FUNCTION__ << endl;
        }


        else
        {


                Texture_Fleche.setRepeated(true);
                Sprite_Fleche.setTexture(Texture_Fleche);
                Sprite_Fleche.setPosition(Vector2f(1500, Position_Y));
                Sprite_Fleche.scale(0.5f, 0.5f);
                Sprite_Fleche.setColor(sf::Color(255, 255, 255, 0));//Invisible
               

        }
}




C_Fleche::C_Fleche(int P_Postion_X, int P_Postion_Y)
        :Degat(50),Position_X(P_Postion_X),Position_Y(P_Postion_Y),Position_Fleche(true)
{
       

       

        if (!Texture_Fleche.loadFromFile("C:/Users/user/Documents/Visual Projet SFML/Textures/Fleche.psd"))
        {
                cout << "Erreur durant le chargement de l'image Objet" << endl;
                cout << __FUNCTION__ << endl;
        }


        else
        {

                Texture_Fleche.setRepeated(true);
                Sprite_Fleche.setTexture(Texture_Fleche);
                Sprite_Fleche.scale(0.5f, 0.5f);
                Sprite_Fleche.setPosition(Vector2f(1500, Position_Y));
                Sprite_Fleche.setColor(sf::Color(255, 255, 255, 0));//Invisible
       
        }

}
« Modifié: Novembre 12, 2016, 08:46:00 pm par clems30 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Objet membre erreurs , C3646 & C4430.
« Réponse #1 le: Novembre 12, 2016, 08:26:27 pm »
Tu as un cycle d'inclusions (personnage.h inclue fleche.h et vice-versa). Il faut casser ce cycle sinon le compilateur va tourner en rond à l'infini, et terminer sur une erreur qui te semble n'avoir rien à voir.

A priori ici c'est très facile, fleche.h n'a pas l'air d'avoir besoin de personnage.h.
Laurent Gomila - SFML developer

clems30

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Objet membre erreurs , C3646 & C4430.
« Réponse #2 le: Novembre 12, 2016, 08:37:07 pm »
J'aimerais retenir mes émotions mais vraiment je t'aime !
Sa fais 2 jours que je suis sur ce problème...
je connaissais pas la notion de cycle d'inclusions MERCI !  ;D
Pour le coup j'avais entendu parler de boucle en rond mais je croyais que le "ifndef "permettait de contrer ça.
Breff encore merci
« Modifié: Novembre 12, 2016, 08:38:45 pm par clems30 »