Kompexe Forward-Deklaration



  • Hallo,

    ich probiere mich gerade mit der Boost-Bibliothek und habe eine reflexiv aufgebaute Datenstruktur:

    enum Junctor {AND, OR, IMPLICIT, EQUIVALENT};
    enum Quantor {FOR_ALL, EXIST};
    
    typedef std::string AtomicFormula;
    typedef boost::tuple<Quantor, AtomicFormula, Formula> QuantorFormula;
    typedef boost::tuple<Junctor, Formula, Formula> BinaryFormula;
    
    typedef boost::variant<
    		AtomicFormula,
      		boost::recursive_wrapper<QuantorFormula>,
        		boost::recursive_wrapper<BinaryFormula>
    		> Formula;
    

    Wie ihr seht, wird Formula benutzt ohne es vorher zu definieren. Mein Wissen reicht nicht aus, um eine solche Forward-Deklaration zu schreiben. Ich hoffe, dass ihr es packt 🙂

    Vielen Dank.

    Tobi



  • Probier mal Formular* in Deine Tupel zu packen. Die Größe von Formular ist zur Zeit Deiner Tupel-Deklaration ja noch nicht bekannt, daher kann der Compiler nicht wissen, wie groß die Elemente sein müssen.



  • Danke für deine Antwort.

    Nun ja, auch hierbei meldet der Compiler einen Fehler, nämlich er Formula nicht
    kennt.



  • tobi_tud schrieb:

    Danke für deine Antwort.

    Nun ja, auch hierbei meldet der Compiler einen Fehler, nämlich er Formula nicht
    kennt.

    Naja, dann stimmt irgendwas mit Deiner Forward-Deklaration nicht.



  • Tachyon schrieb:

    Naja, dann stimmt irgendwas mit Deiner Forward-Deklaration nicht.

    da is aber alles richtig du vogel



  • tobi_tud schrieb:

    Tachyon schrieb:

    Naja, dann stimmt irgendwas mit Deiner Forward-Deklaration nicht.

    da is aber alles richtig du vogel

    Bevor Du Leute beleidigts wären etwas mehr Infos hilfreich. WELCHER Fehler z.B. da kommt...



  • tobi_tud schrieb:

    Tachyon schrieb:

    Naja, dann stimmt irgendwas mit Deiner Forward-Deklaration nicht.

    da is aber alles richtig du vogel

    Na dann ist doch alles Ok.
    Gruß,

    Simon2.


Anmelden zum Antworten