IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

PROBLEME AVEC SINGLETON


Sujet :

VC++ .NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut PROBLEME AVEC SINGLETON
    Bonjour,
    j'ai des erreurs incompréhensibles avec ce code. Est-ce que vous pouvez y jeter un coup d'oeil ?
    J'ai marqué «//ERREUR !!» à droite de chaque ligne qui donne une erreur (il y en a 7 au total).
    La liste des erreurs est en bas.

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    class Udp_Receiver_t :   public UDP_NC_Application_t
    {
      public: 
        Udp_Receiver_t
          ( unsigned long  _hostIPAddress    = ntohl(inet_addr("127.0.0.1"))
           ,const char     * qxInterfaceName = "UDP Transeiver"
           ,unsigned short destUdpPortNumber = 20002
           ,unsigned short hostUdpPortNumber = 20003
           ,unsigned long  destIpAddress     = ntohl(inet_addr("127.0.0.1"))
           ,int            retryTimes        = 1
           ,int            retryTimeout      = 1
           ,short int      addressFamily     = AF_INET
          )
          :	 UDP_NC_Application_t( destIpAddress
                                ,hostIPAddress
                                ,hostUdpPortNumber
                                ,destUdpPortNumber
                                ,qxInterfaceName
                                ,retryTimes
                                ,retryTimeout
                                ,addressFamily
    														),msdestIpAddress(destIpAddress)
      {
          temp=0;
      };
     
        ~Udp_Receiver_t(){};
     
    	static float getData1(){return msg.measuredValue[0];};  //ERREUR1 !!
    	static float getData2(){return msg.measuredValue[1];};  //ERREUR2 !!
    	static float getData3(){return msg.measuredValue[2];};  //ERREUR3 !!
    	static float getData4(){return msg.measuredValue[3];};  //ERREUR4 !!
    	static float getData5(){return msg.measuredValue[4];};  //ERREUR5 !!
     
        void processingData();	
        void sendReport();
        unsigned long getDestId()const{ return msdestIpAddress; };
     
      private:
          unsigned long msdestIpAddress;
          float temp;
     
          union
          {
            double measuredValue[5];
            unsigned char measuredBuffer[64*5];
          } msgToSend;
     
         union
          {
            double *measuredValue[5];
            unsigned char measuredBuffer[64*5];
          } msg;
     
    };
     
    class PFD_UDP_RX_Singleton_t
    {
    private:
      // Constructeur/destructeur
      PFD_UDP_RX_Singleton_t (){ };
      ~PFD_UDP_RX_Singleton_t () { };
    public:
      static float getData1(){ return Udp_Receiver_t::getData1(); };
      static float getData2(){ return Udp_Receiver_t::getData2(); };
      static float getData3(){ return Udp_Receiver_t::getData3(); };
      static float getData4(){ return Udp_Receiver_t::getData4(); };
      static float getData5(){ return Udp_Receiver_t::getData5(); };
      Udp_Receiver_t * get_udp_receiver () { return _udp_receiver; };
      UDP_Message_Server_t * get_server () { return _server; };
      void set_Udp_Receiver_t (Udp_Receiver_t *udp_receiver) { _udp_receiver = udp_receiver; };
      void set_UDP_Message_Server_t (UDP_Message_Server_t * server) { _server = server; };
     
      // Fonctions de création et destruction du singleton
      static PFD_UDP_RX_Singleton_t *getInstance ()
      {
        if (NULL == _singleton)
          {
            _singleton =  new PFD_UDP_RX_Singleton_t;
          }
        return _singleton;
      };  
     
      static void kill ()
      {
        if (NULL != _singleton)
          {
            delete _singleton;
            _singleton = NULL;
          }
      }; // ;
      private:
        static PFD_UDP_RX_Singleton_t* _singleton;                     //ERREUR6 !!
        Udp_Receiver_t * _udp_receiver;
        UDP_Message_Server_t * _server;
    };
    PFD_UDP_RX_Singleton_t *PFD_UDP_RX_Singleton_t::_singleton = NULL; //ERREUR7 !!
     
    #endif
    LISTE DES ERREURS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1)error C2228: la partie gauche de '.measuredValue' doit avoir un class/struct/union
    POUR LES ERREURS 1,2,3,4 et5
     
    Quand je masque les return dans les erreurs 1,2,3,4 et5 ( je retourne des constantes par exemple), j'obtiens les erreurs de Linking suivantes:
     
    3).obj) : error LNK2005: "private: static class PFD_UDP_RX_Singleton_t * PFD_UDP_RX_Singleton_t::_singleton" (?_singleton@PFD_UDP_RX_Singleton_t@@0PAV1@A) déjà défini(e) dans a340gc.obj
     
    4) .obj) : error LNK2005: "private: static class PFD_UDP_RX_Singleton_t * PFD_UDP_RX_Singleton_t::_singleton" (?_singleton@PFD_UDP_RX_Singleton_t@@0PAV1@A) déjà défini(e) dans a340gc.obj
     
    5).exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
    Merci de votre compréhension

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    pour les erreurs de 1 a 5 :
    un fonction statique ne connait pas les données locales d'une instance..
    si la fonction est statique msg doit être statique, ou la fonction doit disposer d'une pointeur d'une instance de Udp_Receiver_t.

Discussions similaires

  1. probleme avec singleton
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 02/02/2008, 19h42
  2. [LINKAGE] probleme avec Singleton
    Par magnus2005 dans le forum C++
    Réponses: 10
    Dernier message: 03/04/2007, 16h34
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo