Anzeige:
Ergebnis 1 bis 4 von 4

Thema: constructor mit std::map

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.04.2006
    Beiträge
    69

    constructor mit std::map

    Hallo,
    im folgenden Code soll der Constructor von A ein default Parameter erhalten. Leider spuckt der g++ ein haufen fehlermeldung aus mit dennen ich nichts anfangen kann.

    - Interessanterweise meckert er bei einem vector mit Defaultparameter nicht!
    - unter Visual Studio 2008 funktiert der code



    Code:
    #include <iostream>
    #include <map>
    #include <vector>
    #include <string>
    using namespace std;
    
    
    
    class A
    {
    public:
            A(map<int,int> number = map<int,int>())
            {
    
            }
    };
    
    int main()
    {
            A a;
    }
    Code:
    main.cpp:11: error: expected ‘,’ or ‘...’ before ‘>’ token
    main.cpp:11: error: wrong number of template arguments (1, should be 4)
    /usr/include/c++/4.3/bits/stl_map.h:91: error: provided for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
    main.cpp:11: error: default argument missing for parameter 2 of ‘A::A(std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >, int)’
    main.cpp: In function ‘int main()’:
    main.cpp:11: error: ‘A::A(std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >, int)’ is private
    main.cpp:19: error: within this context
    Geändert von barton4 (24-03-2010 um 20:12 Uhr)

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Also auf meinem System (Ubuntu 9.10, 64bit, gcc 4.4.1) funktioniert das gepostete Beispiel anstandslos.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer Avatar von lokicall
    Registriert seit
    17.12.2005
    Beiträge
    53
    Unter Windows weicht meine Meldung etwas ab.

    Code:
    a.cpp:12: error: expected `,' or `...' before '>' token
    a.cpp:12: error: wrong number of template arguments (1, should be 4)
    C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_map
    .h:92: error: provided for `template<class _Key, class _Tp, class _Compare, clas
    s _Alloc> class std::map'
    a.cpp: In function `int main()':
    a.cpp:20: error: no matching function for call to `A::A()'
    a.cpp:10: note: candidates are: A::A(const A&)
    a.cpp:13: note:                 A::A(std::map<int, int, std::less<int>, std::all
    ocator<std::pair<const int, int> > >, int)
    PS: Den Sinn des Defaultwertes kann ich nicht ganz nachvollziehen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.04.2006
    Beiträge
    69
    danke das ihr es probiert habt, inzwischen gibt es einen zweiten Konstruktor ohne Parameter.

    Der Sinn ist: Ich habe eine Datenstruktur in der Png Bilder geladen werden. Png Bilder werden in einer Map gespeichert... map<Dateiname als string, BilderElement>. Manche Klassen benötigen diese map, falls diese aber noch nicht vorhanden ist, soll es halt leer bleiben

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •