online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon Annex31B vom 28.07.2021, 20:51 Options

richtigen copy constructor aufrufen - c#


foreach (Animal d in AnimalBufferList)
{
  this.Add( ....call matching copyconstructor.... (d) );
}
.
.
.

Wie kann ich hier den richtigen Constructor aufrufen.
Da ich nicht weiß ob d ein Schwein (Pig) oder Kuh(cow) ist kann ich ja nicht mit new arbeiten. Wie muss ich hier vorgehen?

Also meine tierischen Klassen sind folgendermaßen aufgebaut.

abstract class Animal
{
  public Animal (Animal d)
  {
  }
.
 
 }
}


class Pig: Animal
{
   public Pig(Pig d): base(d)
   {
   }
}

class Cow: Animal
{
    public Cow(Cow d): base(d)
   {
   }
}


Antwort schreiben

Antwort 1 von Marvin42 vom 28.07.2021, 21:28 Options

Benutz ne virtuelle Methode, die den Copy-Vorgang übernimmt und von allen Subklassen überschrieben wird.

Antwort 2 von Annex31B vom 28.07.2021, 22:11 Options

und wie sollte das genau aussehen?
So?

abstract class Animal
{
  public Animal (Animal d)
  {
  }
.
  public abstract Animal CopyObject();  
}

class Pig: Animal
{
   public Pig(Pig d): base(d)
   {
   }
   public override Pig CopyObject()
   {
     return new Pig(this);
   }
}

class Cow: Animal
{
    public Cow(Cow d): base(d)
   {
   }
   public override Cow CopyObject()
   {
     return new Cow(this);
   }
}


Kanns heute nicht mehr testen da ich nicht mehr in der Arbeit bin
Lg Annex31B

Antwort 3 von Marvin42 vom 29.07.2021, 00:48 Options

Ich kenne mich mit der C#-Syntax nicht genau aus und habe auch keinen Compiler hier.

Vom Prinzip her sieht das so aus, wie ich es mir auch vorgestellt hätte.
Ich weiß aber nicht, ob C# kovariante Rückgabetypen unterstützt, es könnte also sein, dass auch in den Unterklassen der Rückgabetyp Animal lauten müsste. Aber das wäre ja kein Problem.

Ähnliche Themen

Hochzahlen in C#
Fed  16.01.2008 - 119 Hits - 1 Antwort

Turbo-Pascal 3.0 war doch die beste Programmiersprache!
MSDOS-Fan  17.01.2008 - 55 Hits - 3 Antworten

"speichern unter" aufrufen (Visual Basic 6)
florian12345  27.07.2009 - 228 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026