none
et l'autre classe RRS feed

  • Question

  • bonjour,

    J'avance dans ma conversion de classes venant de java et je suis bloqué dans ma conversion par quelques erreurs répétitives.

    J'en donne trois pour commencer:

    La première

    J'ai deux méthodes qui traite des traitements répétitifs: ce sont les 3° et 4° méthodes de  la classe ProcessNumber et ProcessEntity:

    public class BuildComponents
    {
    public:
    	BuildComponents::BuildComponents();
    	BuildComponents::~BuildComponents();
    	int* BuildComponents::ProcessNumber( 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<preconditionNormalized*> BuildComponents::reformePrecondition();
    	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();
    };

    ces deux méthodes son implémentée dans le fichiers cpp par deux procédures dont je donne l'interface d'appel:

    int* BuildComponents::ProcessNumber( int iiValue[8], ElementSemantic Enreg, int& u)
    
    std::list<CWord*> BuildComponents::ProcessEntity( std::list<CWord*> color, ElementSemantic Enreg, int& V, bool &bColorIsInitialized)

    et ces méthodes sont appelées dans de nombreux cas dans le source par les lignes suivantes:

    iiValue = ProcessNumber( iiValue, Enreg, u);
    et
    color = ProcessEntity( color, Enreg, v, bColorIsInitialized);

    mais l'appel est rejeté par le compilateur

    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(550): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(554): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(583): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(643): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(653): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(706): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(832): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(839): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(861): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(946): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(967): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(975): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1022): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1058): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1066): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1191): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1198): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1232): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1275): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1285): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1347): error C3861: 'ProcessNumber' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1355): error C3861: 'ProcessEntity' : identificateur introuvable
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1384): error C3861: 'ProcessEntity' : identificateur introuvable

    le deuxième problème répétitif est un problème d'allocation

    Je donne d'abord la classe:

        class QualificateurNormalized
        {
        public:
            int indice;
            int Occurence;
            QualificateurNormalized* listQualificateur;
            std::wstring ListParagraph;
            stUnivers Univers;
            std::wstring Verb;
            std::wstring Sujet;
            std::wstring Complement;
            std::wstring Comment;
            std::wstring Declencheur;
            std::wstring Identifier;
            bool bIsEnumerated;
            int iEnumerated;
            int iPOS;
            int TypeData;
            int Values[8];
            int min;
            int max;
            int type;
            std::list<CWord*> Colors;
            std::list<CWord*> Word;
            QualificateurLink link;
        };

    la déclaration de la variable:

    int iiValue[8] = {0,0,0,0,0,0,0,0};
    std::list<CWord*> color;

    et les allocations dans le code:

    elementNormalized.Values = iiValue;
    &elementNormalized = new QualificateurNormalized();

    les messages d'erreurs du compilateur( une partie):

    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1524): error C2106: '=' : l'opérande gauche doit être une l-value
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1529): error C2106: '=' : l'opérande gauche doit être une l-value
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1536): error C2106: '=' : l'opérande gauche doit être une l-value
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1604): error C2106: '=' : l'opérande gauche doit être une l-value

    La troisième erreur est plus verbeuse, mais elle ne se produit que deux fois sur l'instruction:

    elementNormalized = NULL;

    provoque le message

    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1621): error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'int' (ou il n'existe pas de conversion acceptable)
    1>          E:\usr\Memoria\dev\Common\com\ClassesAligner.hpp(286): peut être 'QualificateurNormalized &QualificateurNormalized::operator =(const QualificateurNormalized &)'
    1>          lors de la tentative de mise en correspondance de la liste des arguments '(QualificateurNormalized, int)'
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1627): error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'std::_List_iterator<_Mylist>' (ou il n'existe pas de conversion acceptable)
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<QualificateurNormalized *,std::allocator<QualificateurNormalized *>>
    1>          ]
    1>          e:\Program Files\Microsoft Visual Studio 10.0\VC\include\list(393): peut être 'std::_List_iterator<_Mylist> &std::_List_iterator<_Mylist>::operator =(const std::_List_iterator<_Mylist> &)'
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<ElementSemantic *,std::allocator<ElementSemantic *>>
    1>          ]
    1>          lors de la tentative de mise en correspondance de la liste des arguments '(std::_List_iterator<_Mylist>, std::_List_iterator<_Mylist>)'
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<ElementSemantic *,std::allocator<ElementSemantic *>>
    1>          ]
    1>          and
    1>          [
    1>              _Mylist=std::_List_val<QualificateurNormalized *,std::allocator<QualificateurNormalized *>>
    1>          ]
    1>..\..\..\..\Linguistic\Coherence\src\BuildComponents.cpp(1628): error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::_List_iterator<_Mylist>' (ou il n'existe pas de conversion acceptable)
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<ElementSemantic *,std::allocator<ElementSemantic *>>
    1>          ]
    1>          e:\Program Files\Microsoft Visual Studio 10.0\VC\include\system_error(425): peut être 'bool std::operator !=(const std::error_code &,const std::error_condition &)'
    1>          e:\Program Files\Microsoft Visual Studio 10.0\VC\include\system_error(432): ou       'bool std::operator !=(const std::error_condition &,const std::error_code &)'
    1>          C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\guiddef.h(197): ou       'int operator !=(const GUID &,const GUID &)'
    1>          e:\Program Files\Microsoft Visual Studio 10.0\VC\include\list(298): ou       'bool std::_List_const_iterator<_Mylist>::operator !=(const std::_List_const_iterator<_Mylist> &) const'
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<ElementSemantic *,std::allocator<ElementSemantic *>>
    1>          ]
    1>          lors de la tentative de mise en correspondance de la liste des arguments '(std::_List_iterator<_Mylist>, std::_List_iterator<_Mylist>)'
    1>          with
    1>          [
    1>              _Mylist=std::_List_val<ElementSemantic *,std::allocator<ElementSemantic *>>
    1>          ]
    1>          and
    1>          [
    1>              _Mylist=std::_List_val<QualificateurNormalized *,std::allocator<QualificateurNormalized *>>
    1>          ]
    pourquoi?


    Jean Noël Martin


    lundi 14 octobre 2013 01:32

Réponses

  • Merci de vos réponse qui apporte une réponse à la deuxième question. mais je ne vois rien qui se rapporte à la première question.

    pour plus de clarté je clos ce thread et j'en rajoute un autre


    Jean Noël Martin


    • Modifié JeanNoel53 mardi 15 octobre 2013 14:00
    • Marqué comme réponse JeanNoel53 mardi 15 octobre 2013 14:00
    lundi 14 octobre 2013 23:23
  • Bonjour,

    Merci de vos réponse qui apporte une réponse à la deuxième question. mais je ne vois rien qui se rapporte à la première question.
    Essayez dans ce cas de poser une question par thread.

    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

    • Marqué comme réponse JeanNoel53 lundi 21 octobre 2013 09:54
    mardi 15 octobre 2013 19:05
    Modérateur

Toutes les réponses

  • Bonjour,

    L'opérateur new s'utiliser avec un pointeur à gauche :

    QualificateurNormalized* elementNormalized;
    elementNormalized = new QualificateurNormalized();

    Cette ligne de code :

    elementNormalized = NULL;

    Ne peut fonctionner que si elementNormalized est un pointeur.

    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

    lundi 14 octobre 2013 19:30
    Modérateur
  • Merci de vos réponse qui apporte une réponse à la deuxième question. mais je ne vois rien qui se rapporte à la première question.

    pour plus de clarté je clos ce thread et j'en rajoute un autre


    Jean Noël Martin


    • Modifié JeanNoel53 mardi 15 octobre 2013 14:00
    • Marqué comme réponse JeanNoel53 mardi 15 octobre 2013 14:00
    lundi 14 octobre 2013 23:23
  • Bonjour,

    Merci de vos réponse qui apporte une réponse à la deuxième question. mais je ne vois rien qui se rapporte à la première question.
    Essayez dans ce cas de poser une question par thread.

    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

    • Marqué comme réponse JeanNoel53 lundi 21 octobre 2013 09:54
    mardi 15 octobre 2013 19:05
    Modérateur