Pointer

amine89

Mitglied
Hallo zusammen!

könnte mir jm vlt erklären was diesen Satz bedeutet:

C++:
Vektor* vektorKreuzprodukt (Vektor & v2)

Vektor ist eine klasse , aber das mit pointer zwischen klassennamen und der Funktion habe ich nicht verstanden.

Danke schÖn im voraus :)
 
Hi

die Funktion gibt einen Pointer auf Vektor zurück (mit return)
So wie man bei "int" eben eine Zahl oder mit "Vektor" einen ganzen Vektor returned
ist es hier eben die Speicheradresse eines Vektors.
 
Oh danke erst mal für die schnelle antwort !

ich habe eben die Funktion so implementiert
C++:
Vekto *vektorKreuzprodukt(Vektor &v2){
                       
       Vektor.x=((y*v2.z)-(z*v2.y));                  
       Vektor.y=((z*v2.x)-(x*v2.z));       
       Vektor.z=((x*v2.y)-(y*v2.x));                 

}
aber der compiler zeigt mir "first used in this function " !
wo könnte bitte das Problem sein ****?
 
Hallo amine89

Woher kommen x, y, z? Möchtest du die Funktion als Member der Klasse Vektor machen? Du machst Vektor.x, aber Vektor ist eine Klasse. Wenn du deren Member ändern willst musst du eine Instanz davon erstellen. Ausserdem gibst du auch nichts aus deiner Funktion zurück.

Viele Grüsse
Cromon
 
Guten Morgen!

Ja die x,y,z sind eigenschaften der Klasse, und diese Funktion soll in einem neuen Objekt " Vektor" das Ergebnis speichern und zurückgeben !

Gruss
Amine
 
Hallo,

ich denke, du wirst 2 Parameter (Vektor) übergeben müssen. Zu einem Produkt gehören nun mal immer mindestens zwei Teilnehmer :)

Dieses neue Objekt "Vektor", dass du zurückgeben möchtest, muss allerdings erst mal mit "new" erzeugt werden, bevor du damit irgendwas machen kannst.

Gruß
MCoder
 
Guten Morgen!

Ja die x,y,z sind eigenschaften der Klasse, und diese Funktion soll in einem neuen Objekt " Vektor" das Ergebnis speichern und zurückgeben !

Gruss
Amine

Also soll der Vektor Zeiger beinhalten, die auf ein Objekt zeigen und du möchtest die Methode dieses Objektes ansprechen?

Kleines Beispiel, wie ich dich verstanden habe:

Code:
class person
{
  private:
    int age;

  public:
    void set_age(int a){ age = a; };
    int  get_age(){ return name; };
}

int main()
{
    int my_age;
    vector<person*> all_persons;

    all_persons.push_back(new person);
    all_persons[0]->set_age( 20 );
    my_age = all_persons[0]->get_age();

    cout << "Die erste Person ist " << my_age << " Jahre alt." << endl;
}

all_persons ist mein Vektor.
In diesem Vektor befindet sich in der ersten Stelle ein Zeiger auf ein Objekt der Klasse "person".
Ich möchte über den Vektor dann die Methode der Klasse "person" ansprechen.

Wenn nicht so gemeint, bitte verdeutlichen.
 
Zuletzt bearbeitet:
Guten Tag zusammen!

ich möchte mit dieser Funktion Kreuzprodukt zweier Vektoren berechnen und ein neues Objekt (Vektor) mit der Ergebnis zurück liefert

Der Methode Prototyp soll nicht geändert werden und lautet :

C++:
 Vektor* vektorKreuzprodukt(Vektor &v2);

Ich habe die Funktion so implementiert aber irgendwie der compiler zeigt mir noch Fehler
C++:
Vektor Vektor ::  *vektorKreuzprodukt(Vektor &v2){
        Vektor *Vektor= new Vektor(Vektor->x,Vektor->y, Vektor->z);             
          Vektor->x=((Vektor->y*v2.z)-(Vektor->z*v2.y));                  
          Vektor->y=((Vektor->z*v2.x)-(Vektor->x*v2.z));       
          Vektor->z=((Vektor->x*v2.y)-(Vektor->y*v2.x));                 
 return  *Vektor;
Meine Klasse hat den Namen Vektor.

Danke euch :)
 
Hallo!

...und wenn ich damit kompiliere :
C++:
Vektor Vektor ::  *vektorKreuzprodukt(Vektor &v2){
        Vektor *Vektor;             
       Vektor->x=((Vektor->y*v2.z)-(Vektor->z*v2.y));                  
      Vektor->y=((Vektor->z*v2.x)-(Vektor->x*v2.z));       
       Vektor->z=((Vektor->x*v2.y)-(Vektor->y*v2.x));                 
 cout << " Kreuzprodukt lautet" <<Vektor->x<<Vektor->y<<Vektor->z<< endl;
}
zeigt mir der compiler "undefined reference in main"

Gruß
Amine
 
Hallo,

also ist "vektorKreuzprodukt" eine Methode der Klasse Vektor?

Dann gehört das Sternchen (*) an eine andere Stelle und und du willst für die Berechnung vermutlich die Member der Klasse verwenden:
C++:
Vektor *Vektor::vektorKreuzprodukt(Vektor &v2)
{
    Vektor *pVektor = new Vektor;
    
    pVektor->x=((y*v2.z)-(z*v2.y));                  
    pVektor->y=((z*v2.x)-(x*v2.z));       
    pVektor->z=((x*v2.y)-(y*v2.x));                 

    cout << " Kreuzprodukt lautet" << pVektor->x << pVektor->y << pVektor->z<< endl;

    return pVektor;
}
Gruß
MCoder
 

Neue Beiträge

Zurück