none
il reste des questions non résolues RRS feed

  • Question

  • bonjour,

    J'avance dans ma conversion; J'ai fini trois primitives, mais j'ai laissé de coté certains problèmes; Je les pose maintenant.

    pour plus de clarté je vais mettre les sources en numérotant les lignes qui sortent en erreur. Je donnerai les messages d’erreur unitairement en mettant entre parenthèse le nombre d’occurrence de l'erreur

    je met

    - le fichier d'include;

    - le fichier avec les primitives concernés( excusez moi il fait environ 3000 Loc) numérotés en fonction des erreurs;

    - le log d'erreurs.

    1° le fichier d'include

    public class BuildComponents
    {
    public:
    	BuildComponents::BuildComponents();
    	BuildComponents::~BuildComponents();
    6	int[8] BuildComponents::ProcessNumber( int iiValue[8], ElementSemantic Enreg, int& u);
    	std::list<CWord*> BuildComponents::ProcessEntity( std::list<CWord*> color, ElementSemantic Enreg, int& V, bool &bColorIsInitialized);
    	std::list<QualificateurNormalized*> BuildComponents::reformeQualificateur( std::list<QualificateurNormalized*> listeQualificateurNormalized);
    	std::list<predicatNormalized*> BuildComponents::reformePredicat( std::list<ElementSemantic*> listeQualificatif);
    	std::list<preconditionNormalized*> BuildComponents::reformePrecondition(std::list<ElementSemantic*> listePrecondition, std::list<QualificateurNormalized*> listQualificateurNormalized);
    	std::list<CObjet> BuildComponents::reformObjets();
    	bool BuildComponents::ParseObjects();
    	std::list<std::wstring*> BuildComponents::reformeUnivers();
    	std::list<std::wstring*> BuildComponents::ParseUniversChain();
    	std::list<std::wstring*> BuildComponents::ParseUnivers();
    	void BuildComponents::MarkPredicate();
    };

    le fichier d'erreur correspondant à cet include

    1>E:\usr\Memoria\dev\Linguistic\Coherence\com\BuildComponents.h(6): error C2059: erreur de syntaxe : '['
    1>E:\usr\Memoria\dev\Linguistic\Coherence\com\BuildComponents.h(6): error C2238: jetons inattendus avant ';'

    le fichier source segmenté entreplusieur thread, du fait de sa taille. je met ici les deux premières primitives

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    #pragma unmanaged 
    #include "StdAfx.h"
    #include "ibase.h"
    #include "IBPP.h"
    #include "AlignStructure.h"
    #include "Macro.h"
    #include "Enumerations.hpp"
    #include "Structure.h"
    #include "TypeDefs.hpp"
    #include "POS.h"
    #include "Layout.h"
    #include "ClassesAligner.hpp"
    #include "LinkDescription.h"
    #include "Language.h"
    #include "Database.h"
    #include "InterbaseManager.h"
    #include "MissionDatabaseManager.h"
    #include "Application.h"
    #include "ParserManager.h"
    #include "Chunker.h"
    #include "Ngramer.h"
    #include "Segmentation.h"
    #include "computingForAlignment.h"
    #include "AnnexFunctions.h"
    #include "Dictionnaire.h"
    #include "StrConv.h"
    #include "StrToken.h"
    #include "MorphSynset.hpp"
    #include "Message.h"
    #include "WordManager.h"
    #include "Exception.h"
    #include "VirtualEquation.h"
    #include "schedulerGlobal.h"
    #include "Proposition.h"
    #include "assertCoherence.h"
    #include "BuildComponents.h"
    
    /*_____LOCAL-DEFINE___________________________________________________________*/
    /*_____LOCAL-TYPES____________________________________________________________*/
    /*_____GLOBAL-DATA____________________________________________________________*/
    extern CAnalysedSegment*                 pSegment;
    extern int                               iIdDoc;
    extern long                              idSegment;
    extern int                               iPredicate;
    extern int                               nParagraph;
    extern SpecificationLoader::CMDBManager  objMDBManager;
    /*_____LOCAL-DATA_____________________________________________________________*/
    /*_____LOCAL-MACROS___________________________________________________________*/
    /*_____LOCAL-FUNCTIONS-PROTOTYPES_____________________________________________*/
    /*_____GLOBAL-FUNCTIONS_______________________________________________________*/
    /*_____LOCAL-FUNCTIONS________________________________________________________*/
    	/*----------------------------------------------------------------------------*/
        /*Name          BuildComponents                                               */
        /*Role          constructeur                                                  */
        /*Interface                                                                   */
        /*In                                                                          */
        /*In/Out        None                                                          */
        /*Result        None                                                          */
        /*----------------------------------------------------------------------------*/
        BuildComponents::BuildComponents()
    	{
    	};
    	
    	/*----------------------------------------------------------------------------*/
        /*Name          BuildComponents                                               */
        /*Role          constructeur                                                  */
        /*Interface                                                                   */
        /*In                                                                          */
        /*In/Out        None                                                          */
        /*Result        None                                                          */
        /*----------------------------------------------------------------------------*/
    
    	BuildComponents::~BuildComponents()
    	{
    	};
    	//
    	/*------------------------------------------------------------------------------*/
        /*Name          ProcessNumber                                                   */
        /*Role          build the structure of the objects qualificateurs               */
        /*Interface                                                                     */
        /*In            u, enreg                                                        */
        /*In/Out        None                                                            */
        /*Result        iiValue[8]                                                      */
        /*------------------------------------------------------------------------------*/
    	//
    	
     91     int[8] BuildComponents::ProcessNumber( int iiValue[8], ElementSemantic Enreg, int& u)
    	{ // 0
    		int test;
    		int test1;
    		int test2;
    		int test3;
    		int test4;
    		std::wstring temp;
    		
    		test = Enreg.wsWord.find( L"#", 0);
            test1 = Enreg.wsWord.find( L"x", 0);
    		test2 = Enreg.wsWord.find( L"N", 0);
            test3 = Enreg.wsWord.find( L"<", 0);
            test4 = Enreg.wsWord.find( L">", 0);
            if( !Enreg.wsWord.find( L"MLRL", 0))
            {
                test = test == 0 || test1 == 0 || test2 == 0 || test3 == 0 || test4 == 0;
                temp = L"";
                if( test1 != 0)
                {
                    int len = Enreg.wsWord.length();
                    temp = Enreg.wsWord.substr(2, len);
                }
                else if( test3 != 0|| test4 != 0)
                {
                    temp = Enreg.wsWord.substr(1, 2);
                }
                else if( test != 0)
                { // 2
                    temp = Enreg.wsWord.substr(1);
                } // 2
                else
                { // 2
                    temp = Enreg.wsWord;
                }
                
    			if( temp == L"one")
    			{ // 1
    			    iiValue[ u] = 1;
    			}
    	        else if( temp == L"two")
    		    {
    			    iiValue[ u] = 2;
    	        }
    		    else if( temp == L"three" || temp == L"Three")
    			{
    				iiValue[u] = 3;
    	        } // 1
    		    else if( temp == L"four")
    			{
    	            iiValue[u] = 4;
    		    } // 1
    			// int _wtoi( const wchar_t *str);
    			iiValue[u] = _wtoi( (const wchar_t*)temp.c_str());
    			u++;
    		}
    		return( iiValue);
    	}
    
    	//
    	/*------------------------------------------------------------------------------*/
        /*Name          ProcessEntity                                                   */
        /*Role          build the structure of the objects qualificateurs               */
        /*Interface                                                                     */
        /*In                                                                            */
        /*In/Out        None                                                            */
        /*Result        None                                                            */
        /*------------------------------------------------------------------------------*/
    	//
    	std::list<CWord*> BuildComponents::ProcessEntity( std::list<CWord*> color, ElementSemantic Enreg, int& V, bool &bColorIsInitialized)
    	{ // 0
    		CWord * pWord;
    		CWord Word;
    		
    		bColorIsInitialized = true;
            pWord = new CWord();
    		Word = *pWord;
            Word.Word = Enreg.wsWord;
            Word.iPOS = Enreg.iPOS;
            Word.ValueOfWord = Enreg.iValWord;
            color.push_back( pWord);
            v++;
    		return( color);
        }
    
    

    les erreurs liés à ce code

    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): warning C4091: '' : ignoré à gauche de 'int' quand aucune variable n'est déclarée
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): error C2143: erreur de syntaxe : absence de ';' avant '['
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): error C3409: bloc d'attributs vide non autorisé
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): error C2143: erreur de syntaxe : absence de ']' avant 'constant'
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): error C2059: erreur de syntaxe : 'constant'
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(91): error C2039: 'ProcessNumber' : n'est pas membre de 'BuildComponents'
    1>          E:\usr\Memoria\dev\Linguistic\Coherence\com\BuildComponents.h(2) : voir la déclaration de 'BuildComponents'
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(92): error C2143: erreur de syntaxe : absence de ';' avant '{'
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(92): error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?)
    
    En fait c'est la déclaration de ProcessNumber qui pose problème.

    Je vous remercie d'avance de donner une réponse par erreur, en donnant à chaque fois la référence de l'erreur à laquelle vous apportez une réponse.


    Jean Noël Martin


    mardi 15 octobre 2013 14:12

Réponses

  • il semble que vous ayez a moitié raison;

    effectivement une array ne peut être renvoyé par une méthode: il faut passer par des pointeurs.

    mais dans l’appelant l'adressage des éléments se fait normalement et pas comme c'est dit dans le tutoriel

    ex:  if( k == 0 && iiValue[k] > 0)


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mercredi 16 octobre 2013 08:35
    mercredi 16 octobre 2013 08:35

Toutes les réponses

  • D'après ce que je vois, une fonction ne peut pas retourner de array en C++ :

    http://www.tutorialspoint.com/cplusplus/cpp_return_arrays_from_functions.htm

    L'erreur vient de là.

    • Marqué comme réponse JeanNoel53 mardi 15 octobre 2013 16:16
    • Non marqué comme réponse JeanNoel53 mercredi 16 octobre 2013 08:32
    mardi 15 octobre 2013 14:20
  • il semble que vous ayez a moitié raison;

    effectivement une array ne peut être renvoyé par une méthode: il faut passer par des pointeurs.

    mais dans l’appelant l'adressage des éléments se fait normalement et pas comme c'est dit dans le tutoriel

    ex:  if( k == 0 && iiValue[k] > 0)


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mercredi 16 octobre 2013 08:35
    mercredi 16 octobre 2013 08:35
  • Bonjour,

    De manière générale on ne retourne jamais une structure ou un tableau qui est alloué dans la pile en C / C++. On crée si nécessaire le tableau la structure dans le tas et on le retourne dans via un pointeur (ou une référence). C'est à l'appelant de récupérer ce pointeur et de libérer l'objet/tableau alloué quand ce n'est plus nécessaire. C'est exactement comme en Java à part que la libération se fait automatiquement par le Garbage Collector...

    mais dans l’appelant l'adressage des éléments se fait normalement et pas comme c'est dit dans le tutoriel
    Les 2 sont possibles car un tableau est par définition l'adresse (pointeur) du premier élément du tableau.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    mercredi 16 octobre 2013 22:24
    Modérateur