User Tag List

Results 1 to 3 of 3

Thread: Pb insertion d'un élément dans un objet map (STL)

  1. #1
    floflo
    Guest

    Pb insertion d'un élément dans un objet map (STL)

    Bonjour,

    Je rencontre un problème d'exécution lors de l'utilisation d'un container map de la STL, déclaré dans la structure de runtime RUNDATA.

    Pour réaliser un test simple, je suis reparti du template d'exemple du SDK de MMF2. Je compile sur Visual C++ 2008 Express.


    Dans le fichier Main.h, j'ai renseigné ce qui suit :
    struct classcomp {
    bool operator() (const int& Id1, const int& Id2) const
    {return Id1<Id2;}
    };

    typedef struct tagRDATA
    {
    // Main header - required
    headerObject rHo; // Header

    // Object's runtime data
    map<int,char,classcomp> TestMapIntChar;

    } RUNDATA;

    Dans la fonction d'exemple des actions du fichier Main.cpp :

    short WINAPI DLLExport Action(LPRDATA rdPtr, long param1, long param2)
    {
    map<int,char,classcomp> ListeIntChar;

    ListeIntChar.insert(map<int,char>::value_typ e(1,'a'));

    rdPtr->ObjetListeIntChar.insert(map<int,char>:: value_type(1,'a'));

    return 0;
    }

    Lorsque l'action est exécutée :
    - l'insertion d'un élément dans la map ListeIntChar définie en locale fonctionne. Avec le débogeur, je peux voir l'élément ajouté et le contenu de ces membres "first" et "second".
    - l'insertion d'un élément dans la map rdPtr->ObjetListeIntChar plante. J'obtiens l'erreur suivante :
    Exception non gérée à 0x00a09404(TestMap.mfx) dans edrt.exe :
    0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000004

    Et le débogeur pointe ici, dans le fichier xtree :

    _Pairib insert(const value_type& _Val)
    { // try to insert node with value _Val
    --> _Nodeptr _Trynode = _Root();
    _Nodeptr _Wherenode = _Myhead;
    (...)

    Quelqu'un a-t'il déjà rencontré et solutionné ce problème ?
    Merci d'avance pour vos réponses.

  2. #2
    Clickteam Clickteam

    Join Date
    Jun 2006
    Location
    France
    Posts
    14,028
    Mentioned
    279 Post(s)
    Tagged
    3 Thread(s)

    Re: Pb insertion d'un élément dans un objet map (STL)

    La structure RUNDATA n'est pas un objet C++, donc quand elle est créée le constructeur des objets C++ qu'elle contient n'est pas appelé, ça doit être l'origine du problème.

    2 solutions :

    1. Remplacer l'objet TestMapInChar par un pointeur, créé dans CreateRunObject et détruit dans DestroyRunObject :

    map<int,char,classcomp>* pTestMapInChar;

    ...

    rdPtr->pTestMapInChar = new map<int,char,classcomp>; // (pas certain de la syntaxe)

    ...

    delete rdPtr->pTestMapInChar.

    2. 2ieme solution, ne pas changer le type mais appeler manuellement le constructeur de l'objet dans CreateRunObject et le destructeur dans DestroyRunObject, ce qui doit donner un truc comme ça (pas certain de la syntaxe!) :

    rdPtr->TestMapInChar.map<int,char,classcomp>::m ap();
    ...
    rdPtr->TestMapInChar.map<int,char,classcomp>::~ map();

  3. #3
    floflo
    Guest

    Re: Pb insertion d'un élément dans un objet map (STL)

    Merci Yves,

    J'ai opté pour la 1ère solution et c'est nickel !

Similar Threads

  1. créer un élément non déjà chargé dans une scène
    By Tessier in forum Multimedia Fusion 2 - Technical Support
    Replies: 26
    Last Post: 19th June 2012, 03:13 AM
  2. [bug] Focus de l'élément Cmb de l'objet Dialog Box
    By ouly in forum Multimedia Fusion 2 - Technical Support
    Replies: 2
    Last Post: 14th March 2009, 04:13 PM
  3. Blocage d'insertion texte dans objet boite d'éditi
    By swisstek in forum Multimedia Fusion 2 - Technical Support
    Replies: 5
    Last Post: 15th March 2007, 10:19 PM
  4. Identifier un objet dans une collision
    By BenjaminG in forum Multimedia Fusion 2 - Technical Support
    Replies: 4
    Last Post: 15th December 2006, 11:36 PM
  5. Aide! direction d'un objet dans MMF
    By haricover in forum Multimedia Fusion 2 - Technical Support
    Replies: 5
    Last Post: 31st October 2006, 10:57 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •