vererbung etc.



  • Danke
    das:
    itsInterface(0) {}
    ist mir noch nicht klar. Zudem sehe ich einez Zugriff mit iid unten. Soll anscheinend nicht verlinkt sondern so ähnlich wie:
    http://www.osnews.com/story/24557/Torvalds_Android_GPL_Claims_Totally_Bogus_
    dort beschrieben ablaufen. rsp ich könne closed source machen (code unten) obwohl sein lib/dll code gpl ist. (mein erster Kodeschnipsel) Wie nennt man denn sowas und ich bekomme mit der iid Linie unten einen Fehler.
    Vielen Dank
    Michael

    case VASCORE::FSystem:
    {
    VASCORE::InterfaceQuery* iq = static_castVASCORE::InterfaceQuery*(param);
    switch (iq->interfaceId)
    {
    case InterfaceQuery(iid): // könnte falsch sein zumindest kapiere ich das nicht
    iq->itsInterface = static_cast<FMSSystem*>(VASCORE::global_FMS);

    break;
    default:
    std::abort();
    iq->itsInterface = 0;
    break;
    }


  • Mod

    mike4 schrieb:

    Danke
    das:
    itsInterface(0) {}
    ist mir noch nicht klar.

    Hast du dir mal angeguckt, was eine Initialisierungsliste ist? Vermutlich nein 🙄 .

    Das itsInterface(0) ist die Initialisierung des Members itsInterface mit 0, das {} ist der (leere) Funktionskörper des Konstruktors.

    Das sind grundlegendste Grundlagen für Klassen.



  • Danke schaue das gleich nochmals an und was ist der iid Funktion?



  • mike4 schrieb:

    Danke schaue das gleich nochmals an und was ist der iid Funktion?

    1. Der Funktion???
    2. iid ist keine Funktion. das sind aber wirklich absolute basics, was iid ist sollte dir nach den ersten 20-30 Seiten eines Einsteigerbuchs deiner Wahl eigentlich glasklar sein.

  • Mod

    mike4 schrieb:

    Danke schaue das gleich nochmals an und was ist der iid Funktion?

    Was soll damit sein? Das ist schlichtweg falsch, darum bekommst du auch einen Fehler. Switchmarken müssen Compilezeitkonstanten sein. Aber ich bin mir nicht einmal sicher, dass es das ist, was du suchst, so wie du den switch benutzt vermute ich, du hast keine Ahnung, was du da tust?



  • ja, also mein Code wird ein x-plane plugin also eine dll. Diese sollte eben via case die Flugsim Mitteilungen auswerten. Das wiederum ist alles in einer anderen GPL dll.
    https://github.com/PhilippMuenzel/vascore-embedded

    auch sowas gibt einen Fehler:
    case VASCORE::InterfaceQuery::interfaceId(iid):

    Fehler:‘VASCORE::InterfaceQuery::interfaceId’ cannot appear in a constant-
    expression

    Völlig neu für mich...dachte sowas ginge nur über Verlinken.


  • Mod

    mike4 schrieb:

    Völlig neu für mich...dachte sowas ginge nur über Verlinken.

    Ich habe dir doch gerade gesagt, was da los ist. Du verstehst noch nicht einmal die Antworten, wie willst du da selber programmieren?



  • logo wenn ich es wüsste, müsste ich ja niemanden überfordern.



  • SeppJ schrieb:

    mike4 schrieb:

    Danke schaue das gleich nochmals an und was ist der iid Funktion?

    Was soll damit sein? Das ist schlichtweg falsch, darum bekommst du auch einen Fehler. Switchmarken müssen Compilezeitkonstanten sein. Aber ich bin mir nicht einmal sicher, dass es das ist, was du suchst, so wie du den switch benutzt vermute ich, du hast keine Ahnung, was du da tust?

    (Hervorhebung von mir)

    Oder nochmal anders formuliert:
    Der Wert hinter der case-Marke muß bereits beim Compilieren bekannt sein, da kannst du nicht die Rückgabe einer Funktion verwenden. Aber da deine switch-Anweisung sowieso nur aus diesem falschen case und default besteht, dürfte eine normale if()-else Anweisung dort vollkommen ausreichen.



  • meine Frage bezog sich auf die Zeile mit iid (in der main.cpp vom obigen link)


Anmelden zum Antworten