+ Antworten
Ergebnis 1 bis 3 von 3

std::map bleibt leer

Diskussion über std::map bleibt leer in C und C++ der Kategorie Programmierung; Wird in der main gemacht. Intanziiert das singleton. Code: if (!p_Tablemap) p_Tablemap = new TABLEMAP; tm.h Code: #include "atlstr.h" #include ...

  1. #1
    Reg.-Benutzer
    Reg.-Datum
    25.09.2009
    Ort
    Kaiserstuhl
    Beiträge
    32

    Standard std::map bleibt leer

    Wird in der main gemacht. Intanziiert das singleton.
    Code:
    if (!p_Tablemap) p_Tablemap = new TABLEMAP;
    tm.h
    Code:
    #include "atlstr.h"
    #include <map>
    
    struct STablemapHashPoint{
      unsigned int  x;
      unsigned int  y;
    };
    typedef std::pair<unsigned int, STablemapHashPoint> PPair;
    typedef std::map<unsigned int, STablemapHashPoint> PMap;
    typedef PMap::iterator PMapI;
    
    extern class TABLEMAP 
    {  
        public:
        TABLEMAP(void);
        ~TABLEMAP(void);
    
      private:
        PMap    _p$[4]; // indexed on "x<<16 | y" (as a uint32_t; x in high 16bits, y in low 16bits)
    
        const bool  p$_insert(const int i, const STablemapHashPoint s){
          if (i>=0 && i<=3) {
            std::pair<PMapI, bool> r=_p$[i].insert(PPair(((s.x&0xffff)<<16) | (s.y&0xffff), s));
            return r.second;
          }
          else return false;
        }
    
    
    } *p_Tablemap;
    #endif
    tm.cpp
    Code:
    CTablemap	*p_tablemap = NULL;
    Hi,

    ich bräucht mal eure Hilfe. Ich quäle mich jetzt schon 8 Stden damit rum.

    Egal wie viel ich in _p$ inserte es bleibt leer. Beziehungsweise es wird gar nicht erst mit 4 initialisiert. Woher kommt das?

  2. #2
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Du lieferst nicht annährend genug Informationen, dass man das Problem nachvollziehen könnte. Du lieferst deine Diagnosen "bleibt leer", "wird nicht initialisiert", aber die helfen nicht weiter, weil nicht klar ist, wie du zu diesen Erkenntnissen gelangt bist, denn dabei kann auch einiges schief gehen.

    Am besten zeigst du ein vollständiges kompilierbares Minimalbeispiel, das das Problem reproduziert. Zumindest solltest du zeigen, wie und wo du p$_insert aufrufst. Da die Methode private ist, kann das ja eigentlich nur im TABLEMAP-Konstruktor passieren.

    Wenn das nicht geht, dann schreib bitte zu deinen Interpretationen die konkreten Beobachtungen dazu, die dazu geführt haben, z.B. "Der Debugger hat an dieser Stelle im Code für diesen Ausdruck diesen Wert angezeigt".
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  3. #3
    Reg.-Benutzer
    Reg.-Datum
    25.09.2009
    Ort
    Kaiserstuhl
    Beiträge
    32

    Standard

    Oh mann ich bin so dumm. Nachts arbeiten ist einfach für den Allerwertesten. Also das Problem war Debugger. Bei so einer Konstruktion (array von maps von structs und uints) zeigt er mir einfach nichts an. Da steht einfach nichts. NOrmalerweise kann man schön alle Member aufklappen und anschaun. Dann steht da alles wichtige. Adressse, Typ, Inhalt usw. Aber hier stand " _p$[4] (0)" Und die Klammer gibt normalerweise die Menge der Elemente an.Schön habe ich mich veräppeln lassen.

    Zum Schluss habe isch das _p$ mal komplett durchiteriert und mit OutputDebugString alles ausgegeben. Danke nochmal für den Tip Und siehe da. Inhalte sind doch drin.

    Gruß und danke für die Zeit Klotzkopp

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. ARP -a leer
    Von Mr.Vain im Forum Networking Technologies
    Antworten: 2
    Letzter Beitrag: 02.12.2009, 12:31
  2. Mein JInternalFrame bleibt leer.
    Von ricky.breaky im Forum Java
    Antworten: 2
    Letzter Beitrag: 22.05.2009, 17:07
  3. Add-In ist leer
    Von fatmike im Forum Basic
    Antworten: 1
    Letzter Beitrag: 23.07.2008, 15:23

Die häufigsten Suchbegriffe für diese Seite:

Bisher noch keine Treffer von einer Suchmaschine