Abfragen von Klassenvariablen innerhalb einer Klasse von eine



  • Halli Hallo hab ne Frage will mit einer Klassenfunktion zwei Zahlen addieren die selbst ein Objekt dieser Klassen sind. Hab den code auch dabei.

    MfG.

    Kote

    #pragma once
    #include<iostream>
    using namespace std;
    class Vector
    {
    public:
    int x;
    int y;

    Vector(int a, int b) {
    	x = a;
    	y = b;
    }
    void addition(string Neu) {
    	int x_neu;
    	int y_neu;
    
    	x_neu = Name.x + Name2.x;
    	y_neu = Name.y + Name2.y;
    
    	Vector Neu(x_neu, y_neu);
    
    
    }
    void Vectoradd(int a, int b) {
    	x = x + a;
    	y = y + b;
    }
    
    void Vectorsubt(int a, int b) {
    	x = x - a;
    	y = y - b;
    }
    void VectorAus() {
    	cout << "Der neue Vektor ist: x = " << x << endl << "y = " << y << endl;
    }
    

    };

    und

    #include <iostream>
    #include<locale>
    #include<string>
    #include "Vector.h";
    using namespace std;
    #pragma once

    int a = 0;
    int b = 0;
    string Name = "";
    string Name2 = "";

    int main() {
    locale loc = locale("");
    locale::global(loc);

    cout << "Bitte geben sie die Koordinaten ihres ersten Vektors ein:" << endl << " x = ";
    cin >> a;
    cout <<endl<< "y = ";
    cin >> b;
    cout <<"Wie heißt ihr Vektor?";
    cin >> Name;
    
    Vector Name(a, b);
    
    cout << "Bitte geben sie die Koordinaten ihres zweiten Vektors ein:" << endl << " x = ";
    cin >> a;
    cout << endl << "y = ";
    cin >> b;
    
    cout << "Wie heißt ihr Vektor?";
    cin >> Name2;
    
    Vector Name2(a, b);
    
    Weiter: cout << "Wollen Sie diesen Vektor mit ihrem vorherigen addieren oder subtrahieren? a = add s = sub"<<endl;
    string Antwort;
    cin >> Antwort;
    if (Antwort == "a")
    {
    	Name.Vectoradd(a, b);
    	Name.VectorAus();
    }
    else if (Antwort == "s")
    {
    	Name.Vectorsubt(a, b);
    	Name.VectorAus();
    }
    else if (Antwort == "n")
    {
    	cout << "Wie soll das neue Objekt heißen?";
    	string Name3;
    	cin >> Name3;
    	Name.addition(Name3);
    	Name3.VectorAus();
    }
    else
    {
    	cout << "Das war keine korrekte eingabe";
    	goto Weiter;
    }
    

    }



  • Sorry nicht gesagt was nicht geht

    	x_neu = Name.x + Name2.x;
    	y_neu = Name.y + Name2.y;
    

    name.x geht nicht das x ist rot unterwellt

    es scheibt hat keine member ""x""



  • Die Variable Name bei Dir ist global als string definiert, und ein string hat nun mal kein Member namens x ...



  • und wie kann ich die dann als das Vektorobjekt dann schreiben?



  • ich möchte aus dem Obj. Name das in der Klasse Vector ist das x haben



  • @Kote sagte in Abfragen von Klassenvariablen innerhalb einer Klasse von eine:

    und wie kann ich die dann als das Vektorobjekt dann schreiben?

    Ich verstehe kein Wort ...
    Du hast mindestens die Variablennamen Name und Name2 zweimal vergeben, einmal global mit dem Typ string, und dann noch mal in main mit dem Typ Vector.

    Das ist zumindest unglücklich. Die in main definierten Variablen sind in Deinen anderen Funktionen/Methoden nicht ohne Weiteres bekannt, deshalb werden dort die global definierten (string)Objekte gefunden, und die haben nunmal kein Member x ...
    Deutlicher kann ich es nicht beschreiben, ich bin kein Lehrer ...



  • Du kannst Variablennamen nur zur Compilezeit festlegen. WQas du da auch immer einliets, es hat nichts mit dem Variablenamen des Vectors zu tun.



  • alles klar danke



  • Falls du doch Variablennamen zur Laufzeit brauchst, kannst du das über eine std::map<std::string, dein_datentyp> lösen. Generell ist es eine häufige Anfängeridee, Variablennamen irgendwie aus Strings erzeugen zu wollen. Lass dir gesagt sein, dass das oft nicht der richtige Ansatz ist.


Log in to reply