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

 C++ Discussion :

problème avec error c2770


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut problème avec error c2770
    Bonjour, je suis en train ed débuggué les sources d'un programme, et je planche sur la dernière erreur générée.

    Voici le code:


    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
    void WINAPI Server::worldServerThread(){
    loop:
    	worldServerSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if(worldServerSock!=INVALID_SOCKET){
    		char serverip[50];
    		config.readInto(serverip, "192.168.1.7");
    		if(connectToWorldServer(serverip,23000)){
    			char servername[50];
    			config.readInto(servername, "monserveuramoi");
    			sendWorldServerAuth(servername);
    			fd_set fds;
    			do {
    				FD_ZERO(&fds);
    				FD_SET (worldServerSock, &fds);
    				int Select = select(worldServerSock+1,&fds,NULL,NULL,NULL);
    				if(Select == SOCKET_ERROR) {
    					setIsActive(false);
    				} else {
    					if(FD_ISSET(worldServerSock,&fds)) {
    						//if(!WSAMain::recvData())
    							//WSAMain::setIsActive(false);
    					}
    				}
    				Sleep(1);
    			} while(getIsActive());
    		}
    	}
    	Sleep(100);
    	goto loop;
    }
    Et l'erreur que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    c:\kims\gameserver\config.h(202) : error C2770: argument(s) modèle explicite(s) non valide(s) pour 'T ConfigFile::string_as_T(const std::string &)'
            c:\kims\gameserver\config.h(102) : voir la déclaration de 'ConfigFile::string_as_T'
            c:\kims\gameserver\server.cpp(130) : voir la référence à l'instanciation de la fonction modèle 'bool ConfigFile::readInto(T (&),const std::string &) const' en cours de compilation
            with
            [
                T=char [50]
            ]
    Quelqu'un aurait une ptite idée svp, je vois pas du tout comment résoudre ça.

    Merci par avance

  2. #2
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    c:\kims\gameserver\config.h(102) : voir la déclaration de 'ConfigFile::string_as_T'
    On pourrait voir cette partie du code? Ainsi que la partie appelant string_as_T?

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Impossible de t'aider sans la déclaration de string_as_T() et le code de readInto().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    oui bien sur avec plaisir si cela peut aider à résoudre mon problème:

    config.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	// Write or read configuration
    	friend std::ostream& operator<<( std::ostream& os, const ConfigFile& cf );
    	friend std::istream& operator>>( std::istream& is, ConfigFile& cf );
     
    protected:
    	template<class T> static string T_as_string( const T& t );
    	template<class T> static T string_as_T( const string& s );
    	static void trim( string& s );
    pour le config.h (202):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template<class T>
    bool ConfigFile::readInto( T& var, const string& key ) const
    {
    	// Get the value corresponding to key and store in var
    	// Return true if key is found
    	// Otherwise leave var untouched
    	mapci p = myContents.find(key);
    	bool found = ( p != myContents.end() );
    	if( found ) var = string_as_T<T>( p->second );
    	return found;
    }
    Encore merci pour votre aide

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Voilà le problème: Ici, T représente un tableau de char, et une fonction ne peut pas retourner un tableau de char.
    Tu dois faire ton string_as_T autrement, par exemple en prenant une référence vers un T en second argument:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    template<class T> static void string_as_T( const string& s, T& output );
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    Si je remplace ma ligne 102 par ton code j'ai ça maintenant :'(

    Vais jamais y arriver.

    Merci en tout cas

    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
    Config.cpp
    c:\kims\gameserver\config.h(141) : error C2244: 'ConfigFile::string_as_T' : impossible de faire correspondre la définition de fonction avec une déclaration existante
            définition
            'T ConfigFile::string_as_T(const std::string &)'
            déclarations existantes
            'void ConfigFile::string_as_T(const std::string &,T &)'
    c:\kims\gameserver\config.h(151) : error C2910: 'ConfigFile::string_as_T' : ne peut pas être explicitement spécialisé
    c:\kims\gameserver\config.h(170) : error C2910: 'ConfigFile::string_as_T' : ne peut pas être explicitement spécialisé
    Server.cpp
    c:\kims\gameserver\config.h(141) : error C2244: 'ConfigFile::string_as_T' : impossible de faire correspondre la définition de fonction avec une déclaration existante
            définition
            'T ConfigFile::string_as_T(const std::string &)'
            déclarations existantes
            'void ConfigFile::string_as_T(const std::string &,T &)'
    c:\kims\gameserver\config.h(151) : error C2910: 'ConfigFile::string_as_T' : ne peut pas être explicitement spécialisé
    c:\kims\gameserver\config.h(170) : error C2910: 'ConfigFile::string_as_T' : ne peut pas être explicitement spécialisé

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Rien ne t'empêche de faire deux versions de la fonction...
    Et de les définir toutes les deux, bien sûr.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2007, 16h43
  2. [TP 7] Problème avec les listes chaînées (error 202)
    Par thelinekioubeur dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 06/12/2006, 23h15
  3. [TP] Problème avec Error 202
    Par Petrucci dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 11/11/2006, 22h37
  4. Réponses: 3
    Dernier message: 17/09/2006, 23h13
  5. Réponses: 21
    Dernier message: 02/10/2005, 19h05

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