Meilleur auteur de réponses
je tourne en rond sur une définition

Question
-
Je suis parti de :
ref class CVirtualEquations { public: CVirtualEquations::CVirtualEquations(); CVirtualEquations::~CVirtualEquations(); static erc CVirtualEquations::ProcessVirtualEquations( CAnalysedSegment^ pSegment); static erc CVirtualEquations::CheckVirtualEquations( List<CAnalysedSegment^>^ pListSegment); }; public ref class CLinguisticSegmentM { public: System::Collections::Generic::List<CAnalysedWordM^>^ pListWord; // Liste de pointeurs sur les Mots qui constituent le Segment System::Collections::Generic::List<CElementSemantiqueM^>^ pListProposition; // Liste de pointeurs sur les Ngrams qui sont dans le Segment System::Collections::Generic::List<CAnalysedChunkM^>^ pListChunk; // Liste de pointeurs sur les Chunks qui sont dans le Segment System::Collections::Generic::List<ElementSemanticM^>^ pListPredicat; System::Collections::Generic::List<ElementSemanticM^>^ pListPrecondition; System::Collections::Generic::List<ElementSemanticM^>^ pListQualificatif; System::Collections::Generic::List<ElementSemanticM^>^ pListUnivers; System::Collections::Generic::List<CVirtualEquations> pListEquations; System::Collections::Generic::List<QualificateurNormalizedM^>^ plistQualificateurNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPredicatNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPreconditionNormalized; System::Collections::Generic::List<CObjetM^>^ plistObjectsNormalized; CLinguisticSegmentM() {;} ~CLinguisticSegmentM() {;} }; public ref class CAnalysedSegmentM { public: unsigned long long ullSegmentID; // Identifiant du Segment dans la base de données CLinguisticSegmentM^ pLinguisticSegment; // Segment decomposition CLayoutM^ pSegmentLayout; // Segment layout at the segment level only short shSegmentCharLength; // Number of character in sentence short shSegmentWordLength; // Number of words in sentence enLanguageM Language; // Langue du segment unsigned long ulDocPosition; // Segment position into the Document CAnalysedSegmentM::CAnalysedSegmentM() { ; }; CAnalysedSegmentM::~CAnalysedSegmentM() { ; }; };
Évidement il ne trouvait pas la référence à CAnalysedSegmentM défini plus tard
j'ai donc essayé de le typer en void*
ref class CVirtualEquations { public: CVirtualEquations::CVirtualEquations(); CVirtualEquations::~CVirtualEquations(); static erc CVirtualEquations::ProcessVirtualEquations( void* pSegment); static erc CVirtualEquations::CheckVirtualEquations( List<void*>^ pListSegment); };
et il me dit :
1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(349): error C3225: l'argument de type générique de 'T' ne peut pas être 'void *', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): warning C4677: 'pListEquations' : la signature de membre non privée contient un type privé d'assembly 'SpecificationLoader::CVirtualEquations' 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(344) : voir la déclaration de 'SpecificationLoader::CVirtualEquations' 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362) : voir la référence à l'instanciation de la classe Générique 'System::Collections::Generic::List<T>' en cours de compilation 1> with 1> [ 1> T=SpecificationLoader::CVirtualEquations 1> ] 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362) : voir la référence à l'instanciation de la classe Générique 'System::Collections::Generic::IList<T>' en cours de compilation 1> with 1> [ 1> T=SpecificationLoader::CVirtualEquations 1> ] 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362) : voir la référence à l'instanciation de la classe Générique 'System::Collections::Generic::ICollection<T>' en cours de compilation 1> with 1> [ 1> T=SpecificationLoader::CVirtualEquations 1> ] 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(362) : voir la référence à l'instanciation de la classe Générique 'System::Collections::Generic::IEnumerable<T>' en cours de compilation 1> with 1> [ 1> T=SpecificationLoader::CVirtualEquations 1> ]
Jean Noël Martin
Réponses
-
la solution est ci dessous
ref class CVirtualEquations; public ref class CLinguisticSegmentM { public: System::Collections::Generic::List<CAnalysedWordM^>^ pListWord; // Liste de pointeurs sur les Mots qui constituent le Segment System::Collections::Generic::List<CElementSemantiqueM^>^ pListProposition; // Liste de pointeurs sur les Ngrams qui sont dans le Segment System::Collections::Generic::List<CAnalysedChunkM^>^ pListChunk; // Liste de pointeurs sur les Chunks qui sont dans le Segment System::Collections::Generic::List<ElementSemanticM^>^ pListPredicat; System::Collections::Generic::List<ElementSemanticM^>^ pListPrecondition; System::Collections::Generic::List<ElementSemanticM^>^ pListQualificatif; System::Collections::Generic::List<ElementSemanticM^>^ pListUnivers; System::Collections::Generic::List<CVirtualEquations^> pListEquations; System::Collections::Generic::List<QualificateurNormalizedM^>^ plistQualificateurNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPredicatNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPreconditionNormalized; System::Collections::Generic::List<CObjetM^>^ plistObjectsNormalized; CLinguisticSegmentM() {;} ~CLinguisticSegmentM() {;} };
Jean Noël Martin
- Marqué comme réponse JeanNoel53 mardi 21 juillet 2015 17:38
Toutes les réponses
-
>j'ai donc essayé de le typer en void*
WTF !!!
Le C++ est un langage fortement typé, on n'est plus en 70 à faire un UNIX en mi assembleur mi C pré-historique.
Le C++/CLI, c'est du C++, faites une forward déclaration de "CAnalysedSegmentM", et des autres.
ref class CAnalysedSegment; ref class CVirtualEquations { public: CVirtualEquations(); ~CVirtualEquations(); static ProcessVirtualEquations( CAnalysedSegment^ pSegment); CheckVirtualEquations( List<CAnalysedSegment^>^ pListSegment); }; ...
Paul Bacelar, Ex - MVP VC++
-
-
-
pouvez vous vous me donnez un lien pour que j'apprenne ce qu'est une forward déclaration
j'ai codé sur la base du lien:
ref class CAnalyzedSegment; ref class CVirtualEquations; public ref class CLinguisticSegmentM { public: System::Collections::Generic::List<CAnalysedWordM^>^ pListWord; // Liste de pointeurs sur les Mots qui constituent le Segment System::Collections::Generic::List<CElementSemantiqueM^>^ pListProposition; // Liste de pointeurs sur les Ngrams qui sont dans le Segment System::Collections::Generic::List<CAnalysedChunkM^>^ pListChunk; // Liste de pointeurs sur les Chunks qui sont dans le Segment System::Collections::Generic::List<ElementSemanticM^>^ pListPredicat; System::Collections::Generic::List<ElementSemanticM^>^ pListPrecondition; System::Collections::Generic::List<ElementSemanticM^>^ pListQualificatif; System::Collections::Generic::List<ElementSemanticM^>^ pListUnivers; System::Collections::Generic::List<CVirtualEquations> pListEquations; System::Collections::Generic::List<QualificateurNormalizedM^>^ plistQualificateurNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPredicatNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPreconditionNormalized; System::Collections::Generic::List<CObjetM^>^ plistObjectsNormalized; CLinguisticSegmentM() {;} ~CLinguisticSegmentM() {;} }; public ref class CAnalysedSegmentM { public: unsigned long long ullSegmentID; // Identifiant du Segment dans la base de données CLinguisticSegmentM^ pLinguisticSegment; // Segment decomposition CLayoutM^ pSegmentLayout; // Segment layout at the segment level only short shSegmentCharLength; // Number of character in sentence short shSegmentWordLength; // Number of words in sentence enLanguageM Language; // Langue du segment unsigned long ulDocPosition; // Segment position into the Document CAnalysedSegmentM::CAnalysedSegmentM() { ; }; CAnalysedSegmentM::~CAnalysedSegmentM() { ; }; };
mais le compilateur me refuse la déclaration de CVirtualEquations
1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(356): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1>D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(356): error C3225: l'argument de type générique de 'T' ne peut pas être 'SpecificationLoader::CVirtualEquations', il doit s'agir d'un type valeur ou d'un handle d'un type référence 1> D:\usr\Specification LoaderV4.1\dev\Common\com\ClasseAlignerManaged.hpp(356) : voir la référence à l'instanciation de la classe Générique 'System::Collections::Generic::List<T>' en cours de compilation 1> with 1> [ 1> T=SpecificationLoader::CVirtualEquations 1> ]
pourtant pour moi quand j'écrit ref je définit une reference; J'ai fini par trouver, il fallait un ^
Jean Noël Martin
- Modifié JeanNoel53 mardi 21 juillet 2015 17:36
-
la solution est ci dessous
ref class CVirtualEquations; public ref class CLinguisticSegmentM { public: System::Collections::Generic::List<CAnalysedWordM^>^ pListWord; // Liste de pointeurs sur les Mots qui constituent le Segment System::Collections::Generic::List<CElementSemantiqueM^>^ pListProposition; // Liste de pointeurs sur les Ngrams qui sont dans le Segment System::Collections::Generic::List<CAnalysedChunkM^>^ pListChunk; // Liste de pointeurs sur les Chunks qui sont dans le Segment System::Collections::Generic::List<ElementSemanticM^>^ pListPredicat; System::Collections::Generic::List<ElementSemanticM^>^ pListPrecondition; System::Collections::Generic::List<ElementSemanticM^>^ pListQualificatif; System::Collections::Generic::List<ElementSemanticM^>^ pListUnivers; System::Collections::Generic::List<CVirtualEquations^> pListEquations; System::Collections::Generic::List<QualificateurNormalizedM^>^ plistQualificateurNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPredicatNormalized; System::Collections::Generic::List<PropositionNormalizedM^>^ pListPreconditionNormalized; System::Collections::Generic::List<CObjetM^>^ plistObjectsNormalized; CLinguisticSegmentM() {;} ~CLinguisticSegmentM() {;} };
Jean Noël Martin
- Marqué comme réponse JeanNoel53 mardi 21 juillet 2015 17:38