Problem mit casten von TPersistent



  • Hallo,
    wenn ich den unten abgebildeten Delphi-Code nach CG2009 übersetze erhalte ich bei

    TClassA* tcla = dynamic_cast<TPersistent*>(Source);
    

    die Fehlermeldung
    [BCC32 Fehler] Unit2.cpp(1209): E2034 Konvertierung von 'TPersistent *' nach 'TClassA *' nicht möglich.

    Kann mir jemand sagen woran das liegt und weiterhelfen?

    (*Delphi*)
    procedure TClassA.Assign(Source: TPersistent);
    begin
      if Source is TClassA then
      begin
        ...
      end
      else
      inherited Assign(Source);
    end;
    
    //meine C++ Übersetzung
    class TClassA : public TPersistent {
    typedef TPersistent inherited; 
    ...
    public:
    virtual void __fastcall Assign(TPersistent* Source);
    ...
    }
    
    void __fastcall TClassA::Assign(TPersistent* Source){
    TClassA* tcla = dynamic_cast<TPersistent*>(Source);
      if (tcla) {
      ...	
      }
      else
        inherited::Assign(Source);
    }
    


  • Du willst doch nach TClassA casten, also:

    TClassA* tcla = dynamic_cast<TClassA*>(Source);
    

    -)



  • Hallo @Th69,

    ich find' das normalerweise zum K**zen, wenn man sich über die Schwächen der Anderen totlacht :D! Aber in diesem Fall mach ich mal 'ne Ausnahme :D!

    Tausend Dank. 👍



  • Ich habe mich nicht totgelacht (ich lebe noch!), sondern es war ja nur ein Grinse-Smilie -)

    P.S. Ich hätte dir ja auch

    TClassA* tcla = (TClassA*) dynamic_cast<TPersistent*>(Source);
    

    empfehlen können 😃


Anmelden zum Antworten