none
une autre erreur de compilation RRS feed

  • Question

  • toujours dans le passage de mon code en managé,j'ai une erreur que j ene comprends pas :

    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(16): error C2039: 'List' : n'est pas membre de 'System'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(16): error C2061: erreur de syntaxe : identificateur 'List'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(19): error C2039: 'List' : n'est pas membre de 'System'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(19): error C2061: erreur de syntaxe : identificateur 'List'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(26): error C2065: 'results' : identificateur non déclaré

    Je vous met le code :

    #include "StdAfx.h"
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "Enumerations.hpp"
    #include "Structure.h"
    
    
    using namespace std;
    
    extern void __cdecl WordNetOverview(char *searchstr, int pos, System::List<mySynset> results);
    
    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, System::List<mySynset> results)
    {
       int pos;
       
    
       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }

    bon courage


    Jean Noël Martin

    dimanche 12 juillet 2015 06:43

Réponses

Toutes les réponses

  • Bonjour, Jean Noël,

    List fait partie de la bibliothèque de classes .NET Framework. Pour utiliser du code managé, je vous invite à consulter cet article:
    Using managed code in an unmanaged application

    Cordialement,
    Dimitar

    lundi 13 juillet 2015 06:39
    Modérateur
  • Je compile avec l'option :Prise en charge du Common Language Runtime (/clr)

    Jean Noël Martin

    lundi 13 juillet 2015 10:35
  • Ca manque de "^", non ?

    Paul Bacelar, Ex - MVP VC++

    lundi 13 juillet 2015 17:39
    Modérateur
  • pour les codes des composants externe je ne migre pas:

    En l’occurrence c'est une interface avec le code de WordNet

    J'ai donc repris le code original avec une autre erreur

    Je vous met le code et l'erreur:

    #include "StdAfx.h"
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    
    
    using namespace std;
    
    extern void __cdecl WordNetOverview(char *searchstr, int pos, std::list<mySynset> results);
    
    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, std::list<mySynset> results)
    {
       int pos; 
    
       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }
    

    et l'erreur :

    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(16): error C2039: 'list' : n'est pas membre de 'std'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(16): error C2061: erreur de syntaxe : identificateur 'list'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(19): error C2039: 'list' : n'est pas membre de 'std'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(19): error C2061: erreur de syntaxe : identificateur 'list'
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(25): error C2065: 'results' : identificateur non déclaré
    


    Jean Noël Martin


    mardi 14 juillet 2015 00:02
  • Comme indiqué dans la documentation ( http://www.cplusplus.com/reference/list/list/ ), il faut inclure <list>.

    Paul Bacelar, Ex - MVP VC++

    mercredi 15 juillet 2015 01:26
    Modérateur
  • Ca à arrangé les choses mais il reste des erreurs :

    /*******************************************************************************
    * FILE NAME: StructureM.h
    * PURPOSE:   This file contains constants and user defined data for all the
    *            classes.
    * HISTORY:
    * Date        Version                   Author
    * 16/05/2003  initial version :1.0      JN Martin
    *******************************************************************************/
    #ifndef StructureM_H
    #define StructureM_H
    
    //--------------------------- INCLUDE-FILES ------------------------------------
    //-------------------------- GLOBAL-NAMESPACE-----------------------------------
    namespace SpecificationLoader
    {
    	using namespace System;
    	using namespace System::Collections::Generic;
    //------------------------------------------------------------------------------
    	
    	ref struct mySynset
    	{
    		int Number;
    		int Frequence;
    		int Identifier;
    		int pos;
    		float Value;
    		System::String^ Word;
    		System::String^ Definition;
    	};
    	
    	ref struct sEquationM
    	{
    		int len;
    		array<System::String^, 1>^ pWord1;
    		array<System::String^, 1>^ pWord2;
    	};
    	
    		
    	ref struct ElementWork
    	{
    		int Id;
    		System::String^ wsText;
    	};
    
    	ref struct stPOSM
    	{
    		array<enPOSM, 1>^ pPOS;
    	};
    
    	ref struct stOptionStructureM
    	{
    		System::String^ sSectionName;
    		System::String^ sKeyName;
    		System::String^ sValue;
    	};
    
    	ref struct stAnalysedWordM
    	{
    		System::String^				wsWord;					  //  Texte du mot
    		System::String^				wsLemma;				  //  Texte du lemma
    		enPOSM                      POS;                      //  Part Of Speech du lemma (et du mot)
    		enGenderM                   Gender;                   //  Genre du lemma (et du mot)
    		enPersM                     iPers;
    		enNbrM                      iNbr;
    		int                         iExcluded;                //  Le lemma est important ou non
    		unsigned long               ulStart;                  //  Position du premier caractère du mot dans le segment
    		unsigned long               ulLength;                 //  Longueur du mot (les espaces sont exclus)
    	};
    
    	ref struct stElementDescriptionM
    	{
    		System::String^ sSectionName;
    		System::String^ sKeyName;
    		System::String^ sValue;
    		unsigned int dwValue;
    		bool bValue;
    		System::String^ sDefaultValue;
    		unsigned int dwDefaultValue;
    		bool bDefaultValue;
    		int iType;
    	};
    };
    #endif
    

    le code :

    #include "StdAfx.h"
    #include <list>
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    
    
    using namespace std;
    
    extern void __cdecl WordNetOverview(char *searchstr, int pos, std::list<mySynset> results);
    
    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, std::list<mySynsetl> results)
    {
       int pos; 
    
       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }
    

    et l'erreur résiduelle

    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(17): error C2065: 'mySynset' : identificateur non déclaré
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(20): error C2065: 'mySynset' : identificateur non déclaré
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(26): error C2664: 'WordNetOverview' : impossible de convertir le paramètre 3 de 'std::list' en 'std::list'
    1>          Impossible de copier la construction class 'std::list', car les constructeurs de copie sont ambigus ou aucun constructeur de copie n'est disponible
    


    Jean Noël Martin

    mercredi 15 juillet 2015 07:16

  • mySynset n'existe pas, c'est SpecificationLoader::mySynset qui est défini.

    Paul Bacelar, Ex - MVP VC++

    jeudi 16 juillet 2015 08:38
    Modérateur
  • Je l'ai fait voila le rapport d'erreur
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(137): error C3699: '*' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '*' par '^' pour poursuivre l'analyse
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(418) : voir la référence à l'instanciation de la classe modèle 'std::allocator<_Ty>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset
    1>          ]
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(476) : voir la référence à l'instanciation de la classe modèle 'std::_List_nod<_Ty,_Alloc>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset,
    1>              _Alloc=std::allocator<SpecificationLoader::mySynset>
    1>          ]
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(580) : voir la référence à l'instanciation de la classe modèle 'std::_List_val<_Ty,_Alloc>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset,
    1>              _Alloc=std::allocator<SpecificationLoader::mySynset>
    1>          ]
    1>          ..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(21) : voir la référence à l'instanciation de la classe modèle 'std::list<_Ty>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(138): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(139): error C3699: '*' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '*' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(140): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(195): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(200): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(506): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(621): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(627): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(677): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(710): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(715): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(866): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(915): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(925): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(954): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(959): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(966): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(996): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1187): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1488): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1501): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse


    Jean Noël Martin

    jeudi 16 juillet 2015 17:09
  • SpecificationLoader::mySynset est une classe .NET, vous ne pouvez donc pas mettre des instances de celle-ci dans une std::list.std::list fait partie de la STL du C++ standard, qui ne support donc pas les instances managées.


    Paul Bacelar, Ex - MVP VC++

    jeudi 16 juillet 2015 17:56
    Modérateur
  • et j'ai toujours la même erreur

    Jean Noël Martin

    jeudi 16 juillet 2015 19:01
  • Si vous ne changez pas le code, c'est normal.

    Ne mettez pas de SpecificationLoader::mySynset dans une std::list.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 juillet 2015 07:10
    Modérateur
  • Je l'ai donc retiré, et la liste d'erreur persiste :

    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(17): error C2065: 'mySynset' : identificateur non déclaré
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(20): error C2065: 'mySynset' : identificateur non déclaré
    1>..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(26): error C2664: 'WordNetOverview' : impossible de convertir le paramètre 3 de 'std::list' en 'std::list'
    1>          Impossible de copier la construction class 'std::list', car les constructeurs de copie sont ambigus ou aucun constructeur de copie n'est disponible
    


    Jean Noël Martin

    vendredi 17 juillet 2015 08:25
  • mySynset n'existe pas, c'est SpecificationLoader::mySynset qui est défini. (BIS)

    On ne sait pas ce  que vous faites mais c'est pas ce que nous vous demandons de faire.

    Sans le code actuel, c'est un exercice de divination.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 juillet 2015 10:01
    Modérateur
  • Vous m'avez dit une fois de mettre SpecificationLoader en classe, et une fois de le retirer

    Je veux bien vous mettre ce que vous voulez voir, mais soyez explicite, car vous m'avez reproché d'en mettre trop


    Jean Noël Martin

    vendredi 17 juillet 2015 11:31
  • >mettre SpecificationLoader en classe

    ???

    C'est pas une classe, c'est un namespace.

    J'ai peut-être une mémoire de poisson rouge, mais je ne pense pas vous avoir indiquez de mettre ou d'enlever "SpecificationLoader" mais je vous ai juste indiqué pourquoi le compilateur ne comprenait goutte à votre code.

    Le fait d'ajout ou de supprimer le namespace, c'est votre interprétation de la chose.

    Moi, ce que je vous conseil, c'est déjà de prendre la décision de savoir où sont vos classes en terme de namespace et de vous en tenir à votre décision et donc ensuite de faire en sorte que le compilateur la comprenne.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 juillet 2015 12:40
    Modérateur
  • je n'ai pas parlé de mettre ou d'enlever le namespace. J'ai perlé de faire préfixer le mySynset par SpecificationLoader

    Jean Noël Martin

    vendredi 17 juillet 2015 16:49
  • faire préfixer le mySynset par SpecificationLoader ou pas c'est fonction de votre choix en terme de namespace.

    Je ne vais pas choisir à votre place.

    Et, en fonction de votre choix, il faut que le code soit cohérent avec celui-ci.

    On ne peut mettre SpecificationLoader aveuglement devant tout mySynset, c'est fonction du contexte (définition de classe, déclaration de méthode, définition de méthodes etc..).


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 juillet 2015 17:39
    Modérateur
  • J'ai mis la définition de Synset dans StructureM.h;

    Je vous donne le code et le message d'erreurs qui ressemble de plus en plus aux messages d'erreurs abscons :

    /*

      interface to WordNet

    */
    #include "StdAfx.h"
    #include <list>
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"



    using namespace std;

    extern void __cdecl WordNetOverview(char *searchstr, int pos, std::list<SpecificationLoader::mySynset> results);

    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, std::list<SpecificationLoader::mySynset> results)
    {
       int pos;

       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }

    les messages d'erreurs abscons:

    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(137): error C3699: '*' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '*' par '^' pour poursuivre l'analyse
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(418) : voir la référence à l'instanciation de la classe modèle 'std::allocator<_Ty>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset
    1>          ]
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(476) : voir la référence à l'instanciation de la classe modèle 'std::_List_nod<_Ty,_Alloc>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset,
    1>              _Alloc=std::allocator<SpecificationLoader::mySynset>
    1>          ]
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(580) : voir la référence à l'instanciation de la classe modèle 'std::_List_val<_Ty,_Alloc>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset,
    1>              _Alloc=std::allocator<SpecificationLoader::mySynset>
    1>          ]
    1>          ..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(22) : voir la référence à l'instanciation de la classe modèle 'std::list<_Ty>' en cours de compilation
    1>          with
    1>          [
    1>              _Ty=SpecificationLoader::mySynset
    1>          ]
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(138): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(139): error C3699: '*' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '*' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(140): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(195): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(200): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(506): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(621): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(627): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(677): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(710): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(715): error C3699: '&&' : impossible d'utiliser cette indirection sur le type 'SpecificationLoader::mySynset'
    1>          le compilateur remplace '&&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(866): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(915): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(925): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(954): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(959): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(966): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(996): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1187): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1488): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\list(1501): error C3699: '&' : impossible d'utiliser cette indirection sur le type 'const SpecificationLoader::mySynset'
    1>          le compilateur remplace '&' par '^' pour poursuivre l'analyse
    Ce status de compilation se produit maintenant sur tous les classes qui font appel a mySynset


    Jean Noël Martin




    • Modifié JeanNoel53 samedi 18 juillet 2015 15:23
    samedi 18 juillet 2015 10:17
  • Toujours la même histoire, vous mélangez objet managé et structure de la STL.

    "SpecificationLoader::mySynset" est un type managé, vous ne pouvez pas en mettre dans une liste de la STL.

    Utilisez une "cliext::list" si vous voulez avoir la même API que la list STL mais qui support des références sur des types managés.

    https://msdn.microsoft.com/en-us/library/bb385936%28v=vs.110%29.aspx


    Paul Bacelar, Ex - MVP VC++

    lundi 20 juillet 2015 15:40
    Modérateur
  • je l'ai fait; il me reste :

    1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/list(1616): error C2440: 'return' : impossible de convertir de 'SpecificationLoader::mySynset' en 'SpecificationLoader::mySynset'
    1>          Impossible de copier la construction struct 'SpecificationLoader::mySynset', car les constructeurs de copie sont ambigus ou aucun constructeur de copie n'est disponible
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/list(1615) : lors de la compilation de la fonction membre 'SpecificationLoader::mySynset cliext::impl::list_select<_Value_t,_Is_ref>::front_item::get(void)' de la classe modèle
    1>          with
    1>          [
    1>              _Value_t=SpecificationLoader::mySynset,
    1>              _Is_ref=true
    1>          ]
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cliext/list(1692) : voir la référence à l'instanciation de la classe modèle 'cliext::impl::list_select<_Value_t,_Is_ref>' en cours de compilation
    1>          with
    1>          [
    1>              _Value_t=SpecificationLoader::mySynset,
    1>              _Is_ref=true
    1>          ]
    1>          ..\..\..\..\..\..\WordNet\src\lib\WnOver.cpp(22) : voir la référence à l'instanciation de la classe modèle 'cliext::list<_Value_t>' en cours de compilation
    1>          with
    1>          [
    1>              _Value_t=SpecificationLoader::mySynset
    1>          ]

    en en ajoutant les ^

    ça compile

    /* LIgne 1
    
      interface to WordNet 
    
    li 5*/
    #include "StdAfx.h"
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    // ligne 13
    
    
    using namespace std;
    
    extern void __cdecl WordNetOverview(char *searchstr, int pos, cliext::list<SpecificationLoader::mySynset^> results);
    
    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, cliext::list<SpecificationLoader::mySynset^> results)
    { // ligne 22
       int pos; 
    
       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }
    
    
    


    Jean Noël Martin


    lundi 20 juillet 2015 17:15
  • Manquerait pas comme d'habitude  un "^" ???

    Paul Bacelar, Ex - MVP VC++

    • Proposé comme réponse Emile Supiot lundi 27 juillet 2015 09:55
    lundi 20 juillet 2015 18:19
    Modérateur
  • on est dans du C std:

    mais en ajoutant les ^ sur mySysnet ça compile

    /* LIgne 1
    
      interface to WordNet 
    
    li 5*/
    #include "StdAfx.h"
    #define __WN_CPP
    #include "wn.h"
    #include "AlignStructure.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    // ligne 13
    
    
    using namespace std;
    
    extern void __cdecl WordNetOverview(char *searchstr, int pos, cliext::list<SpecificationLoader::mySynset^> results);
    
    //------------------------------------------------------------------------------
    void WordNetOver( char* searchstr, cliext::list<SpecificationLoader::mySynset^> results)
    { // ligne 22
       int pos; 
    
       for (pos = 1; pos <= NUMPARTS; pos++)
       {
          WordNetOverview( searchstr, pos, results);
       }
    }
    
    
    


    Jean Noël Martin


    mardi 21 juillet 2015 04:13