Wieso "non-class type SVG_color()"?

05/04/2014 - 01:03 von Jörg Yadgar Bleimann | Report spam
Hi(gh)!

Meine neu programmierte Klasse für Farbwert-Tripel sieht so aus:

class SVG_color
{
private:
short red;
short green;
short blue;
public:
SVG_color(short, short, short);
void set (short, short, short);
};

SVG_color::SVG_color(short r=0, short g=0, short b=0)
{
red = r;
green = g;
blue = b;
}

void SVG_color::set(short r=0, short g=0, short b=0)
{
red = r;
green = g;
blue = b;
}

mit einem Konstruktor und einer Methode für nachtràgliche Zuweisungen
von Werten.

Wenn ich aber die Methode aufrufe (natürlich nach vorheriger
Initialisierung einer Instanz von SVG_color!):

SVG_color fill(); // schwarz
fill.set(255); // rot
fill.set(255, 255); // gelb
fill.set(0, 128, 255); // himmelblau

bekomme ich folgende Fehlermeldungen:

yadgar@debian:/media/Raytracing/Povscn/Flags/Coats of Arms$ g++
-std=c++11 flagmaker.cc -o flagmaker
flagmaker.cc: In function ‘int main(int, char**)’:
flagmaker.cc:56:8: error: request for member ‘set’ in ‘fill’, which is
of non-class type ‘SVG_color()’
flagmaker.cc:57:8: error: request for member ‘set’ in ‘fill’, which is
of non-class type ‘SVG_color()’
flagmaker.cc:58:8: error: request for member ‘set’ in ‘fill’, which is
of non-class type ‘SVG_color()’

Hàtte ich set vielleicht inline definieren sollen? Wenn ja, warum?

Bis bald im Khyberspace!

Yadgar
10 PRINT"AFGHANISTAN GRUESST DEN REST DER WELT!"
20 GOTO 10

RUN
 

Lesen sie die antworten

#1 Markus Schaaf
05/04/2014 - 11:41 | Warnen spam
Am 05.04.2014 01:03, schrieb Jörg 'Yadgar' Bleimann:

SVG_color fill(); // schwarz


^^

Die Klammern müssen weg, sonst ist es eine Funktionsdeklaration.
Übrigens scheint Deine set-Methode etwas redundant. Man kann sie auch
weglassen und stattdessen schreiben:

fill = SVG_color( 1, 2, 3 );

Ist natürlich Geschmackssache.

Ähnliche fragen