Zum Inhalt springen

MSVC6 Bug beim Überschreiben virtueller Funkionen: C2555 (war: c2555)


Empfohlene Beiträge

Geschrieben

Hallo,

ich kann mit dem msvc6 compiler keine virtuellen template funktionen überschreiben. ms meint, ich solle keine verwenden oder mir dieses

vs-net2003 monster zulegen. nunja für unsere situation ist beides

schlecht. der einzigste ausweg wäre nun, alle betroffenen klassen

- und das sind richtig viele - mit borland zu kompilieren und per

dll wieder mit einzubinden, richitg ?

Geschrieben

Was man da tun kann, hängt vom Code ab. Ohne den zu sehen, kann man da nicht viel sagen.

Es geht bei dem Bug um die fehlende Unterstützung für kovariante Rückgabetypen bei virtuellen Funktionen. Wenn es dir also gelingt, den Rückgabewert woanders unterzubringen oder den Typ einheitlich zu machen, war's das schon. Aber wie gesagt, was man da tun kann, hängt vom Code ab.

Mit Templates hat der Bug nichts zu tun.

P.S.: Wieso bezeichnest du VS.NET2003 als Monster?

P.P.S.: Den C++-Compiler von VS.NET2003 gibt's kostenlos.

Geschrieben

template <class _CT>

class _tBaseToken

{

//

};

template <class _CT>

class _tBaseDatabase

{

typedef _tBaseToken<_CT>tokenType;

virtual tokenType *allocateToken(_CT parent)=0; // wir brauchen ne menge solcher

};

//first derivate :

template <class _CT>

class BruteForceDatabase

: public _tBaseDatabase<_CT>

{

public:

class tokenType : public _tBaseToken<_CT>

{

//ctor´s,ops,....

}

tokenType* allocateToken (_CT parent) //genau hier knallts dann natürlich

{

return new tokenType( parentObject, *this);

}

};

Angewendet werden soll das dann wie folgt :

typedef _tBaseToken<_tBot*>Token;

typedef _tBaseDatabase<_tBot*>Database;

Database*pd2;

switch (type) :

case TYPE_A : pd2 = ((new BruteForceDatabase<_tBot*>())); //hier gibts dann natürlich : error C2259:

//cannot instantiate abstract class due to following members...

so, ich hoffe das sind net zu viele details, um da was zu sagen zu können.

vs2003 monster ? ok, das liegt an meiner hardware. der ms kram läuft bei inna vmware ;-)

vielen dank für die schnelle antwort, seid ja richtig fleißig hier

Geschrieben

Wie Klotzkopp schon sagte, der Fehler bezieht sich auf den Typ des Rückgabewertes beim Überschreiben virtueller Funktionen (müssen alle den gleichen Rückgabe-Typ haben, wenn die restlichen Parameter identisch sind).

Allerdings: Was spricht eigentlich dagegen den neueren VC++ Compiler zu verwenden? Der 6er ist ja nun wirklich schon seit ein paar Jahren abgelöst.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...