PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : constructor mit std::map



barton4
24-03-2010, 20:01
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





#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;
}




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

jeebee
24-03-2010, 20:36
Also auf meinem System (Ubuntu 9.10, 64bit, gcc 4.4.1) funktioniert das gepostete Beispiel anstandslos.

lokicall
26-03-2010, 14:56
Unter Windows weicht meine Meldung etwas ab.



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.

barton4
04-04-2010, 15:43
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