000
03.04.2014, 14:51 Uhr
Yadgar
|
Hi(gh)!
Folgendes Problem: ich habe eine (im Moment noch ziemlich rudimentäre) Klasse für SVG-Rechteckobjekte programmiert; weil in SVG die Attribute x und y (Koordinaten der linken oberen Ecke) standardmäßig auf 0 gesetzt sind, wollte ich dieses Verhalten in C++ nachbilden und habe den Konstruktor entsprechend programmiert:
C++: |
class SVG_rectangle { unsigned int startx; unsigned int starty; unsigned int width; unsigned int height; public: SVG_rectangle(unsigned int=0, unsigned int=0, unsigned int, unsigned int); };
SVG_rectangle::SVG_rectangle(unsigned int x, unsigned int y, unsigned int w, unsigned int h) { startx = x; starty = y; width = w; height = h; }
int main(int paramn, char* params[]) { SVG_rectangle rec_01(100, 100); SVG_rectangle rec_02(40, 20, 150, 75);
|
Leider funktioniert das nicht, ich bekomme folgende Fehlermeldung:
Code: |
yadgar@debian:/media/Raytracing/Povscn/Flags/Coats of Arms$ g++ -std=c++11 flagmaker.cc -o flagmaker flagmaker.cc:31:3: error: default argument missing for parameter 3 of ‘SVG_rectangle::SVG_rectangle(unsigned int, unsigned int, unsigned int, unsigned int)’ flagmaker.cc:31:3: error: default argument missing for parameter 4 of ‘SVG_rectangle::SVG_rectangle(unsigned int, unsigned int, unsigned int, unsigned int)’
|
- obwohl laut SCHADER, KUHLINS: Programmieren in C++, Springer 1993, S. 201-203 Konstruktoren durchaus so formuliert werden dürfen! Könnte es daran liegen, dass im C++11-Standard nur noch entweder gar keine oder alle Übergabevariablen Defaultwerte haben können? Wenn ich für w und h ebenfalls Defaultwerte einsetze, funktioniert es nämlich wieder...
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |