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


von Tobias O. (Gast)


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 !

von Μαtthias W. (matthias) Benutzerseite


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

von Tobias O. (Gast)


Lesenswert?

Das ging aber schnell. Mit managed Code funktioniert das genauso.

Vielen Dank.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.