INTERFACES UND C++



  • kurze frage:

    gibt es das wort "interface" in C++ oder gibt es da nur abstrakte klassen ?
    eigentlich wird es ja nur in JAVA echt gebraucht, denn da bin ich ja im beerben von klassen auf nur EINE beschränkt. In C++ kann ich ja jede Menge Klassen beerben.

    Mich verunsichert eigentlich nur, dass z.B. in VisualC++ das Wort "interface" sofort blau -also als codewort- markiert wird.

    Kennt sich da jemand aus ?

    MfG
    Jumbo



  • hallo,
    hab gerade mal die includes durchsucht.
    Im basetyps.h steht der folgende Eintrag:

    # define interface struct

    Das Schlüsselwort interface ist demnach gleichbedeutend mit struct.

    Gruß,
    DC

    edit: hehe, ich war Erster!!!!



  • Weil dahinter (per define) nichts anderes als das Schlüsselwort struct steckt. 😉



  • ok, danke. hat vielleicht noch jemand eine erklärung, was ein interface mit einem struct zu tun haben könnte ?

    Jumbo



  • Jumbo2 schrieb:

    ok, danke. hat vielleicht noch jemand eine erklärung, was ein interface mit einem struct zu tun haben könnte ?

    struct ist in C++, dass gleiche wie class. Wobei bei struct, wenn kein private, public oder protected angegeben wird public genommen wird und bei class hingegen private. Und ein interface is ja auch nur ne abstrakte Basisklasse von der jede Klasse, die das Interface implementiert, abgelieten wird. In C++ is ne abstrakte Basisklasse jede Klasse mit mindestens einer rein virtuellen Funktion ("virtual f()=0").
    :xmas1:



  • Das Wort "interface" wird in Visual C++ aus einem anderen Grund blau hervorgehoben.

    Stichwort COM.



  • User-- schrieb:

    Das Wort "interface" wird in Visual C++ aus einem anderen Grund blau hervorgehoben.
    Stichwort COM.

    Jo, aber warum benutzen die "interface", wenns dies sowieso als "struct" typedef'en? Ist ja eigentlich kein C++ keyword.



  • bluecode schrieb:

    User-- schrieb:

    Das Wort "interface" wird in Visual C++ aus einem anderen Grund blau hervorgehoben.
    Stichwort COM.

    Jo, aber warum benutzen die "interface", wenns dies sowieso als "struct" typedef'en? Ist ja eigentlich kein C++ keyword.

    Gegenfrage: Warum benutzt du statt struct {}; nicht einfach class foo { public: };?



  • moe szyslak schrieb:

    bluecode schrieb:

    User-- schrieb:

    Das Wort "interface" wird in Visual C++ aus einem anderen Grund blau hervorgehoben.
    Stichwort COM.

    Jo, aber warum benutzen die "interface", wenns dies sowieso als "struct" typedef'en? Ist ja eigentlich kein C++ keyword.

    Gegenfrage: Warum benutzt du statt struct {}; nicht einfach class foo { public: };?

    😕 Ich benutze prinzipiell beides? 😕
    :xmas1:



  • User-- schrieb:

    Das Wort "interface" wird in Visual C++ aus einem anderen Grund blau hervorgehoben. Stichwort COM.

    LOL, dafür gibts auch noch __interface. Dieses Wort hat so viele Bedeutungen... 👎
    Aus der Dokumentation:

    A Visual C++ interface can be defined as follows: 
    Can inherit from zero or more base interfaces.
    Cannot inherit from a base class.
    Can only contain public, pure virtual methods.
    Cannot contain constructors, destructors, or operators.
    Cannot contain static methods.
    Cannot contain data members; properties are allowed.
    modifier __interface interface-name {interface-definition};
    

    Weiter steht da, dass

    __interface IFoo 
    {
        void Bar();
    };
    

    gleichbedeutend ist mit

    struct __declspec(novtable) IFoo
    {
        virtual void Bar() = 0;
    };
    

Anmelden zum Antworten