mikrocontroller.net

Forum: PC-Programmierung c++ Klassen-Methoden überschreiben


Autor: Tobias O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich beschäftige mich zur Zeit etwas mit c++ programmierung und habe
folgendes Problem.

Ich möchte eine C++ Klasse ableiten und eine Methode aus dieser
überschreiben. Die überschriebene Methode soll etwas Arbeit ausführen
und danach die Methode der Basisklasse aufrufen. Eigentlich eine ganz
simple Sache, aber meine C++ Kenntnisse sind total verschüttet.
Vielleicht könnt ihr mir helfen.

Das ist mein Testprogram. Mein Problem: Die Methode der abgeleiteten
Klasse ruft rekursiv immer sich selbst auf. Ich bekomme das nicht
richtig hin, bin jetzt schon 2 Stunden am frickeln.


#include "stdafx.h"
using namespace System;

// Basisklasse
ref class A
{
private:
  array<float>^ A_Data;
public:
  A(){};
  virtual void SetData(array<float>^ in)
  {
    Console::WriteLine("Basisklasse");
    A_Data = gcnew array<float>(in->Length );
    in->CopyTo(A_Data,0);
  }
};

// Abgeleitete Klasse
ref class A_Ext : A
{
public:
  virtual void SetData (array<float>^ in) override
  {
  // dieser Aufruf soll die Methode der Basisklasse aufrufen
  // ruft aber ständig sich selbst auf
    Console::WriteLine("Abgeleitete Klasse");
    SetData (in);
  }
};


int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World");
    A_Ext^ a = gcnew A_Ext();
    array<float>^ f = gcnew array<float>(100);
    a->SetData (f);
    return 0;
}

Vielen Dank für eure Mühe !

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

in klassischem C++ würde das so aussehen:

A::SetData(in);

Wie das aber in C++ für .net verhält das du offensichtlich verwendest
kann ich dir nicht sagen.

Matthias

Autor: Tobias O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ging aber schnell. Mit managed Code funktioniert das genauso.

Vielen Dank.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.