none
une classe d'erreurs abscons RRS feed

  • Question

  • bonjour,

    Dans ma migration vers le mode managé, j'ai une flopée d'erreurs passablement abscons

    Je vous met le code, l'include et la flopée d'erreurs :

    le code :

    #include "stdafx.h"
    #include <sstream>
    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <string.h>
    #include <io.h>
    
    #include "Dictionnaire.h"
    namespace SpecificationLoader
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Collections::Generic;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    	using namespace std;
    //------------------------------------------------------------------------------
    
    //----------- METHOD IMPLEMENTATION OF SensDictionnary Class -------------------
    
    
    
    SensDictionnary::SensDictionnary() : sens() {}
    SensDictionnary::~SensDictionnary() {}
    //------------------------------------------------------------------------------
    bool SensDictionnary::isKnown( System::String^ word)
    {
       System::String^ w = word;
       if(sens.find( w) == sens.end())
       {
          return false;
       }
       else
       {
          return true;
       }
    }
    //------------------------------------------------------------------------------
    void SensDictionnary::reset()
    {
       sens.clear();
    }
    
    SensDictionnary::SensDictionnary( char* FileName) : sens()
    {
       std::ifstream read;
    
       read.open( FileName);
       read >> (*this);
       read.close();
    }
    
    //------------------------------------------------------------------------------
    int SensDictionnary::SaveSens( char *filename)
    {
       std::ofstream write;
    
       write.open(filename);
       if(!write.fail())
       {
          write << (*this);
          write.close();
          return(0);
       }
       else
          return( -1);
    }
    
    //------------------------------------------------------------------------------
    mySynset SensDictionnary::getSens( System::String^ word)
    {
       return sens[word];
    }
    //------------------------------------------------------------------------------
    bool SensDictionnary::addSens( System::String^ word, mySynset syns)
    {
       if(sens.count(word) > 0)
       {
          return false;
       }
       else
       {
          sens[word] = syns;
          return true;
       }
    }
    //------------------------------------------------------------------------------
    void SensDictionnary::remove( System::String^ word)
    {
       sens.erase(word);
    }
    //------------------------------------------------------------------------------
    void SensDictionnary::updateSens ( System::String word^, mySynset pSynset)
    {
        sens[word] = pSynset;
    }
    
    System::String^ SensDictionnary::toString()
    {
       std::stringstream s;
       for(std::map<std::string,mySynset>::iterator it = sens.begin(); it != sens.end(); it++)
       {
          s << it->first;
          s << "\t";
          s << it->second.Number;
          s << "\t";
          s << it->second.Frequence;
          s << "\t";
          s << it->second.Identifier;
          s << "\t";
          s << it->second.pos;
          s << "\t";
          s << it->second.Value;
          s << "\t";
          s << it->second.Word;
          s << "\t";
          s << it->second.Definition;
          s << "\n" ;
       }
       return s.str();
    }
    //------------------------------------------------------------------------------
    System::String^ SensDictionnary::keyListString()
    {
       std::string s;
    
       for(std::map<std::string,mySynset>::iterator it = sens.begin(); it != sens.end(); it++)
       {
          s += "'"; s += it->first; s+= "' ";
       }
       return s;
    }
    
    ostream& operator<<(ostream& s, SensDictionnary &dict)
    {
       return (s << dict.toString());
    /*   for(std::map<std::string,mySynset>::iterator it = dict.sens.begin(); it != dict.sens.end(); it++)
       {
          s << it->first << "\t" << it->second.Number << "\t" << it->second.Frequence << "\t" << it->second.Identifier << "\t" << it->second.pos << "\t" << it->second.Value << "\t" << it->second.Word << "\t" << it->second.Definition << "\n" ;
       }
       return s; */
    }
    //------------------------------------------------------------------------------
    istream& operator>>(istream& read, SensDictionnary &dict)
    {
       char BufLine[600];
       char* pTerm;
       std::string word;
       mySynset syns;
       int Len;
    
       iNumFormula = 0;
       iNumEntity = 0;
       iNumVirtualEquation = 0;
       while(read.good())
       {
          read.getline(BufLine, 600);
          pTerm = strtok( BufLine, "\t");
          if(pTerm != NULL)
          {
             word = pTerm;
             pTerm =strtok( NULL, "\t");
             syns.Number = atoi( pTerm);
             pTerm =strtok( NULL, "\t");
             syns.Frequence = atoi( pTerm);
             pTerm =strtok( NULL, "\t");
             if (pTerm == NULL)
                syns.Identifier = 0;
             else
                syns.Identifier = atoi( pTerm);
             pTerm =strtok( NULL, "\t");
             if (pTerm == NULL)
                syns.pos = 0;
             else
                syns.pos = atoi( pTerm);
             if (syns.pos == 7)
                iNumFormula++;
             if (syns.pos == 8)
                iNumEntity++;
             if (syns.pos == 17)
                iNumVirtualEquation++;
             pTerm =strtok( NULL, "\t");
             syns.Value = atof( pTerm);
             pTerm =strtok( NULL, "\t");
             if( pTerm != NULL)
             {
                strcpy( syns.Word, pTerm);
                pTerm =strtok( NULL, "\t");
                strcpy( syns.Definition, pTerm);
                dict.sens[word] = syns;
             }
          }
       }
       return read;
    }
    
    //------------------------------------------------------------------------------
    
    	std::map<int,mySynset> sens;
    
    	SensTemporary::SensTemporary() : sens() {}
    	SensTemporary::~SensTemporary() {}
    
    	mySynset SensTemporary::getSens(int id)
        {
    		return sens[id];
    	}
        void SensTemporary::remove(int id)
        {
             sens.erase(id);
        }
        void SensTemporary::updateSens (int id, mySynset* pSynset)
        {
            sens[id] = *pSynset;
        }
    
        bool SensTemporary::isExist(int id)
        {
            int i;
            i = sens.count(id);
    		if( i > 0)
            {
    			return true;
    		}
    		else
            {
    			return false;
    		}
    	}
    
    
    
    	bool SensTemporary::addSens(int id, mySynset syns)
        {
            int i;
    
            i = sens.count(id);
    		if( i > 0)
            {
    			return false;
    		}
    		else
            {
    			sens[i] = std::set( syns);
    			return true;
    		}
    	}
    };

    L'include ;

    #ifndef _DICTIONNAIRE_H
    #define _DICTIONNAIRE_H
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    namespace SpecificationLoader
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Collections::Generic;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    	using namespace std;
    
    
    	ref struct mySynset
    	{
    		int Number;
    		int Frequence;
    		int Identifier;
    		int pos;
    		float Value;
    		System::String^ Word;
    		System::String^ Definition;
    	};
    
    
    	ref class  SensDictionnary
    // 20
    	{
    	public:
            cliext::hash_map< System::String^, mySynset> sens;
            SensDictionnary();
            ~SensDictionnary();
            SensDictionnary( char*);
            bool isKnown( System::String^);
            void reset();
            int SaveSens( char*);
            mySynset getSens( System::String^);
            bool addSens( System::String^, mySynset);
            void updateSens( System::String^, mySynset);
            void remove( System::String^);
            System::String^ toString();
            System::String^ keyListString();
    	};
    // 36
    	ref class  SensTemporary
    	{
    	private:
            cliext::hash_map< int, mySynset> sens;
    	public:
            SensTemporary();
            ~SensTemporary();
    // 44
    		mySynset getSens( int);
            void remove( int);
            void updateSens( int, mySynset);
            bool addSens( int, mySynset);
            bool isExist( int);
    	}
    	//------------------------------------------------------------------------------
    	extern int iNumEntity;
    	extern int iNumFormula;
    	extern int iNumVirtualEquation;
    };
    #endif

    et la flopée d'erreurs:Les deux premières sont solubles mais après,bonjour les dégats :

    1>D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(21): error C2011: 'SpecificationLoader::mySynset' : redéfinition du type 'struct'
    1>          D:\usr\Specification LoaderV4.1\dev\Common\com\StructureM.h(21) : voir la déclaration de 'SpecificationLoader::mySynset'
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(883): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(1241) : voir la référence à l'instanciation de la classe modèle 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(36) : voir la référence à l'instanciation de la classe modèle 'cliext::hash_map<_Key1_t,_Mapped_t>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(874): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(883): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(1241) : voir la référence à l'instanciation de la classe modèle 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(54) : voir la référence à l'instanciation de la classe modèle 'cliext::hash_map<_Key1_t,_Mapped_t>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(874): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(66): error C2628: 'SpecificationLoader::SensTemporary' suivi de 'int' n'est pas conforme (n'auriez-vous pas oublié un ';' ?)
    1>D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(66): error C3145: 'iNumEntity' : une variable globale ou statique ne peut pas avoir de type managé 'SpecificationLoader::SensTemporary'


    Jean Noël Martin


    • Modifié JeanNoel53 samedi 18 juillet 2015 17:46
    • Type modifié JeanNoel53 lundi 20 juillet 2015 18:10
    vendredi 17 juillet 2015 11:28

Réponses

Toutes les réponses

  • Moi, je commence toujours par la première.

    Et la première est on ne peut plus simple : SpecificationLoader::mySynset est déclaré dans "Dictionnaire.h" est dans "StructureM.h".

    Et en C++, on peut pas avoir 2 déclarations de classe différentes avec le même nom dans le même namespace, et en C++/CLI ou en C++11 aussi.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 juillet 2015 12:32
    Modérateur
  • J'avais dit que les deux premières erreurs étaient triviales. C'est la suite qui pose problême

    Jean Noël Martin

    vendredi 17 juillet 2015 16:51
  • Vous n'êtes pas un débutant, vous savez très bien que le compilateur est aux fraises dans l'analyse du code dés qu'il a vue la première erreur.

    On commence dont par corriger la première erreur, les autres erreurs, c'est soit du bullshit soit des indices pour comprendre la première erreur, point barre.

    Alors commencez par corriger les premières erreurs triviales avant de flooder les forums.

    Pour les suivantes , commencez par ne pas oubliez le ";" après l'accolade fermante de la déclaration de la classe.

    Et l'utilisation de type managé dans les paramètres de template sans les "^", je crois pas qu'il apprécie la plaisanterie, notre cher compilateur.


    Paul Bacelar, Ex - MVP VC++


    vendredi 17 juillet 2015 18:13
    Modérateur
  • je vous met donc les erreurs abscons :

    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(883): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(1241) : voir la référence à l'instanciation de la classe modèle 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(36) : voir la référence à l'instanciation de la classe modèle 'cliext::hash_map<_Key1_t,_Mapped_t>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(874): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=System::String ^,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(883): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(1241) : voir la référence à l'instanciation de la classe modèle 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(54) : voir la référence à l'instanciation de la classe modèle 'cliext::hash_map<_Key1_t,_Mapped_t>' en cours de compilation
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/hash_map(874): warning C4490: 'new' : utilisation incorrecte du spécificateur de substitution ; 'cliext::impl::hash_map_select<_Key1_t,_Mapped_t,_Is_ref_key,_Is_ref_mapped>::insert' ne correspond pas à une méthode de classe ref de base
    1>          with
    1>          [
    1>              _Key1_t=int,
    1>              _Mapped_t=SpecificationLoader::mySynset,
    1>              _Is_ref_key=false,
    1>              _Is_ref_mapped=true
    1>          ]
    1>          'new' ou 'override' sont autorisés uniquement lorsqu'une méthode de base correspondante existe à partir d'une classe ref
    1>D:\usr\Specification LoaderV4.1\dev\Utility\com\Dictionnaire.h(66): error C2143: erreur de syntaxe : absence de ';' avant '}'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(50): error C2079: 'read' utilise une class de 'std::basic_ifstream<_Elem,_Traits>' non défini
    1>          with
    1>          [
    1>              _Elem=char,
    1>              _Traits=std::char_traits<char>
    1>          ]
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(51): error C2039: 'open' : n'est pas membre de 'System::Int32'
    1>          c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : voir la déclaration de 'System::Int32'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(458) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(344) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Ty &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1128) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,unsigned char &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1118) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,unsigned char *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1111) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,signed char &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1104) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,signed char *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1097) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1090) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1082) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &&,unsigned char &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1074) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &&,unsigned char *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1067) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &&,signed char &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1060) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &&,signed char *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<char,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1053) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Elem &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(1028) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2784: 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &&,_Elem *)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &&' à partir de 'int'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\istream(987) : voir la déclaration de 'std::operator >>'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(52): error C2677: '>>' binaire : aucun opérateur global trouvé qui accepte le type 'SpecificationLoader::SensDictionnary' (ou il n'existe aucune conversion acceptable)
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(53): error C2039: 'close' : n'est pas membre de 'System::Int32'
    1>          c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : voir la déclaration de 'System::Int32'
    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(59): error C2079: 'write' utilise une class de 'std::basic_ofstream<_Elem,_Traits>' non défini
    1>          with
    1>          [
    1>              _Elem=char,
    1>              _Traits=std::char_traits<char>
    1>          ]


    Jean Noël Martin

    vendredi 17 juillet 2015 18:40
  • >Dictionnaire.cpp(51): error C2039: 'open' : n'est pas membre de

    C'est quoi cette ligne 51 de Dictionnaire.cpp ???


    Paul Bacelar, Ex - MVP VC++

    dimanche 19 juillet 2015 02:29
    Modérateur
  • Je la trouve à la ligne 67 loin de la première erreur.

    en outre : 1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(67): error C2039: 'open' : n'est pas membre de 'System::Int32'

    je ne vois pas ce que System::Int32 à à voire avec ifstream


    Jean Noël Martin


    • Modifié JeanNoel53 dimanche 19 juillet 2015 18:41
    dimanche 19 juillet 2015 18:29
  • Si les numéros de lignes ne correspondent pas, je me pencherais vers l'expansion en ligne des MACRO.

    Utilisez l'option \P pour savoir ce qui est vraiment compilé.

    https://msdn.microsoft.com/en-us/library/8z9z0bx6.aspx?f=255&MSPPError=-2147217396

    Je ne sais pas comment est configurer votre compilateur mais j'ai l'impression que tous vos warning sont des erreurs chez moi. Je pense que vous avez systématiquement oublier le "^" après le nom du type lors de la définition des types des conteneur cliext.


    Paul Bacelar, Ex - MVP VC++

    lundi 20 juillet 2015 16:04
    Modérateur
  • Ça va un peu mieux :mais j'ai le retour:

    1>L:\usr\Verify\Memoria\dev\Utility\Dictionnaire\src\Dictionnaire.cpp(66): error C2079: 'read' utilise une class de 'std::basic_ifstream<_Elem,_Traits>' non défini


    Jean Noël Martin

    lundi 20 juillet 2015 16:53
  • >Ça va un peu mieux

    Vous avez fait quoi ???

    http://en.cppreference.com/w/cpp/io/basic_ifstream

    il est où l'include à fstream ??


    Paul Bacelar, Ex - MVP VC++

    lundi 20 juillet 2015 18:16
    Modérateur
  • J'ai mis l'option /P

    Jean Noël Martin

    mardi 21 juillet 2015 04:15
  • le problème n'est pas résolu

    Jean Noël Martin

    mardi 21 juillet 2015 20:27
  • Je m'en doutais bien.

    Vous n'avez pas lu la documentation que j'ai donné en lien.

    L'utilisation de /P désactive la compilation et l'édition de lien, ne laissant que le pré-processing.

    Cette option permet d'obtenir un .i correspondant à la fin du traitement du préprocesseur.

    Mais c'était pour comprendre le décalage des lignes.

    Mais le problème actuel est bien plus trivial, je pense :

                

    (BIS) :

    http://en.cppreference.com/w/cpp/io/basic_ifstream

    il est où l'include à fstream ??


    Paul Bacelar, Ex - MVP VC++


    mercredi 22 juillet 2015 01:31
    Modérateur
  • dans stdafx

    je vous met l'extrait:

    #include <allocators>
    #include <codecvt>
    #include <exception>
    #include <cliext/hash_map>
    #include <ios>
    #include <iosfwd>
    #include <iostream>     // std::cout, std::ostream
    #include <istream>
    #include <fstream>
    #include <limits>
    #include <locale>
    #include <map>
    #include <numeric>
    #include <ostream>      // operator<<, std::endl
    #include <set>
    #include <sstream>      // std::ostringstream
    #include <stack>
    #include <string>
    #include <streambuf>
    #include <strstream>
    #include <type_traits>
    #include <utility>


    Jean Noël Martin


    • Modifié JeanNoel53 mercredi 22 juillet 2015 08:47
    mercredi 22 juillet 2015 08:45
  • Régénérez les en-têtes pré-compilés.

    Si cela ne change rien, regardez dans les .i générés grâce à \P pourquoi la définition du template a "sauté" (via des constantes de compilation probablement).


    Paul Bacelar, Ex - MVP VC++

    mercredi 22 juillet 2015 09:36
    Modérateur
  • J'ai regardé le i, mais je n'y ai rien trouvé. Mais les messages d'erreur ont changé sur Dictionnaire comme sur Event

    Jean Noël Martin


    • Modifié JeanNoel53 mercredi 22 juillet 2015 20:00
    • Marqué comme réponse JeanNoel53 mercredi 22 juillet 2015 20:00
    mercredi 22 juillet 2015 18:07