Private Vector in einer Klasse?
-
Hallo,
ich habe wieder ein Problem. Folgender Code:Gerade.h: class Gerade { private: vector<double> y(3); vector<double> x(3); double b,m,a; string ko; public: void rechnungen(); void output(); double get(string ko); };
Folgender Fehler kommt beim Compilieren von Gerade.cc (welche Gerade.h includiert):
Gerade.h:13: invalid data member initialization
Gerade.h:13: (use `=' to initialize static data members)
Gerade.h:14: invalid data member initializationDie Zeilen 13 und 14 sind die mit dem vector...
Was ist daran falsch?Und noch etwas zweites nebenbei:
Ich habe mir das Buch C++ lernen und professionell anwenden geholt, finde es auch zimmlich gut. Nur habe ich das Gefühl das manche Sachen oft vorgezogen werden. Wozu braucht ein Anfänger von gleich am Anfang die ganzen Sachen mit Bildschirmbefehlen und diese Cout Manipulatoren? Geht das nur mir so oder ist das wirklich etwas seltsam mit der Reihenfolge der Themen?mfg,
marc
-
Die Fehlermeldung sagt es doch schon:
Du kannst in einer Klasse keine Variablen (auch keine Vectoren) initialisieren, außer sie sind statisch.
-
Es muß
vector<double> x;
heißen, analog auch für y. Das mit den Klammern ist ein Konstruktoraufruf und in einer Klassendeklaration darf sowas nicht stehen. Die Konstruktoren Deiner Datenelement kannst Du von der Initialisierungsliste Deines Konstruktors aus aufrufen:Gerade::Gerade() : x(3), y(3) // Konstruktoraufrufe { ... }
Was mir gerade so auffällt:
Du verwendest vector in der Deklaration ohne std:: das sieht mir danach aus, als hättest Du ein using std::vector oder ein using namespace std in einem Header auf Filescope stehen. Das sollte man nicht tun, weil damit für jeden der das Ding einbindet plötzlich, möglicherweise ungewollt und auch unbemerkt, die Namen zur Verfügung stehen und mit anderen Namen kollidieren können.MfG Jester
-
edit