Announcement

Collapse
No announcement yet.

Was bedeutet das Makro HIDESBASE?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Was bedeutet das Makro HIDESBASE?

    Was bedeutet das Makro HIDESBASE?

  • #2
    Hi Daniel!<br>

    siehe Hilfe:<br>
    <PRE>
    Die Compiler legen mit Hilfe des Makros HIDESBASE (definiert in SYSDEFS.H) fest, daß diese Typen von Funktionsdeklarationen vollkommen eigenständig sind. Wenn beispielsweise die Basisklasse T1 eine virtuelle Funktion namens func ohne Argumente deklariert, und wenn die von ihr abgeleitete Klasse T2 eine Funktion mit demselben Namen und derselben Signatur deklariert, würde der Aufruf DCC32 -jphn eine HPP-Datei mit folgendem Prototyp erstellen:

    virtual void T1::func(void);

    HIDESBASE void T2::func(void);

    Ohne die HIDESBASE-Deklaration legt die C++ Programmsemantik fest, daß die virtuelle Funktion T1::func() vonT2::func() überschrieben wird.

    </PRE>

    Ich hoffe das reicht Dir zur Erklärung.<br>

    Gruß Fre

    Comment


    • #3
      Danke! Und für was brauch ich sowas? Ich habs nämlich bei nem Quellcode gesehen:

      <PRE>
      HIDESBASE MESSAGE void __fastcall WMEraseBkgnd...
      BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_ERASEBKGND, TWME....
      </PRE>

      Kannst Du mir erklären warum ich hier das Makro HIDESBASE brauche, wenn ich die Nachricht WM_ERASEBKGND abfangen möchte

      Comment


      • #4
        Hi Daniel!

        Wenn Du virtuelle Funktionen ableitest oder überschreibst,<br>
        in einer neuen Klasse weiß der Compiler immer noch welches alles<br>
        seine Vorgänger sind.( für die internen tabellen)<br>
        Bei HIDESBASE wird nur Deine Funktion benutzt ohne das die<br>
        Vorgänger gesucht werden.<br>
        Man braucht sich nur merken, daß man virtual benutzt wenn der <br>
        Vorgänger es so deklariert und bei HIDESBASE genauso.<br>
        Der Rest ist intern.<br>

        Gruß Fre

        Comment

        Working...
        X