Frage zur verwendung von vectoren und der Übergabe an Klassen
-
Also ich soll ne Klasse POLYGON schreiben die folgende Eigenschaften hat:
- Vektor aus 5 bis 10 Punkten (x/y)
- x-und y-Position des Polygon-Bezugspunktes in der Ebene (die
- x/y-Koordinatenwerte des nullten
Punktes im Punktevektor sind gleich mit den Werten des Bezugspunktes)
- FlächeninhaltMethoden Polygon:
- Abfragemethoden für die Eigenschaften x und y des Bezugspunktes
- Abfragemethode Flächeninhalt
- Konstruktor mit geeigneten Vorgabewerten
- Standardkonstruktor ohne VorgabewerteSoweit eigentlich kein Problem, nur was mir Probleme bereitet ist diese Vektorgeschichte.
Der Vektor soll private in der Klasse Rechteck sein.
meine Klasse:
#include <vector> using namespace std; class POLYGON : { public: //POLYGON(double,double,double,double) Eingabe von aussen hier einfügen POLYGON(); virtual ~POLYGON(); private: double x_pos; double y_pos; vector<double> x_werte; vector<double> y_werte; double flaecheninhalt; //wird erst im Konstruktor berechnet };Das Problem ist, mir ist noch nicht so ganz klar wie ich von einer Funktion, in meinem Fall der main, die Vektordaten an die Klasse übergeben.
Bei anderen Sachen wie zb den beiden double Werten sähe das ja so aus:
header:POLYGON::POLYGON(double a_x_pos,double a_y_pos) { x_pos=a_x_pos; y_pos=a_y_pos; }main:
#include <iostream.h> #include <vector> #include "POLYGON.h" using namespace std; int main() { POLYGON instanz(50,100) return 0; }nur wie funktioniert das ganze mit vektoren? und kann man x und y positionen auch in einen 2dimensionalen vektor packen, wenn ja wie sieht dann die deklaration in der Klasse aus?
-
einen zd-vektor wirst du dafür nicht brauchen, ginge allerdings so:
typedef vector<vector<double> > two_d_double_vector;Wenn ich deine Frage richtig verstanden habe, dann willst du wissen, wie du an den konstruktor von polygon einen vector übergeben kannst? na so:
polygon::polygon(const std::vector<double>& parameter) : x_werte(parameter) { };So sähe (schreibt man das so?) die definition des Konstruktors aus. Aufrufen tust du ihn dann so:
vector<double> vals; vals.push_back(1); // noch mehr daten reinfüllen. polygon instanz(vals); // konstruktor aufrufenWas noch sinnvoll wäre, wäre eine Struktur Point o.ä. zu schreiben, die zwei Daten zugleich festhalten kann. dann speicherst du nicht zwei vector<double> sondern einen vector<Point>.
-
Ist es dann auch möglich direkt im konstruktor
private klassen vektor = übergebenen vektor ;
zu machen, oder gibt es da noch was zu beachten?
Ist meine deklaration der private vektoren in der Klassendefinition überhaupt richtig?
und wie sähe der Konstruktor aus, wenn ich nicht nur x_werte als parameter habe sondern auch noch den y_werte?
und was meinst du mit einer struktur?
ne standard Struktur wie aus ANSCI C?