Ankündigung

Einklappen
Keine Ankündigung bisher.

User helfen User - Programmieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Könntest Mutter zu nem functor machen und doSomethingElse() als template schreiben die den Functor aufruft.

    Spoiler: 

    class Mutter {

    public:
    int operator() { return doSomething(this); }
    int doSomething();
    int doSomething2();

    private:
    Tochter tochter_;
    }

    class Tochter {
    public:
    template
    int doSomethingElse(T* t) { return (*t)(); }
    void doSomethingElse2();
    }

    oder
    Spoiler: 

    class Mutter {

    public:
    int operator() { return doSomething(); }
    int doSomething();
    int doSomething2();
    Mutter() : tochter_(this) {}

    private:
    Tochter tochter_;
    }

    template
    class Tochter
    {
    public:
    Tochter(T* t) : t_(t) {}

    int doSomethingElse() { return (*t)(); }

    private:
    T* t_;
    }


    Wobei ich beides glaube ich nicht schön finde, außerdem alles ungetestet. Vererbung wenn möglich/sinnvoll auf jeden Fall schöner. Mehr infor wären hilfreich.

    Edit:
    Kannst das Template in Tochter Natürlich auch weglassen. Und es so Machen:
    Spoiler: 

    class Tochter
    {
    public:
    Tochter(Mutter* mutter) : mutter_(mutter) {}

    int doSomethingElse() { return (*mutter)(); }

    private:
    Mutter* mutter_;
    }


    Pointer kannst du ggf auch austauschen wenn kopieren der Mutter instanz okay ist. Bzw im ersten Vorschlag durch eine Referenz ersetzen also:

    int doSomethingElse(T& t) { return (&t)(); }

    und dann im Functor einfach mit doSomethingElse(*this) aufrufen.

    Kommentar


      Danke schonmal, ich schau Montag nochmal genauer. Vielen Dank für jegliche Hilfe ;)

      Kommentar


        Und noch eine Lösung mit std::functional und std::bind. Die ist soweit "getestet". Ist c++11. Falls nicht verfügbar einfach die boost pendants nehmen.

        [spoiler]
        #include
        #include

        class B
        {
        public:
        int doSomethingElse(std::function f) { return f(); }
        };

        class A
        {

        public:
        int doSomething() { return 2 + 3;};

        void run()
        {
        auto p = std::bind(&A::doSomething, this);
        std::cout

        Kommentar


          Zitat von BUSFAHRER
          Moin,
          wir haben mehrere Hundert Linux-Geräte, auf diesen läuft eine Node.js Anwendung sowie eine eigene Chrome-Extension.
          Jetzt brauchen wir die Möglichkeit, beides zu updaten.
          Also der Nutzer soll dich Möglichkeit haben, automatische Updates zu aktivieren oder zu deaktivieren. Wenn nicht aktiv, soll nach Neustart bzw. zu einer festen Zeit nach Updates geprüft werden und bei Bestätigung das Update geladen werden.
          Bei den automatischen Updates sollen auch nicht alle gleichzeitig geupdated werden, soll beispielsweise erstmal nur 100, und wenn die fertig sind, die nächsten 100.
          Gibts für sowas irgendein Tool, was behilflich sein könnte?
          Systemd?

          Kommentar


            Zitat von KleinerElefant
            Und noch eine Lösung mit std::functional und std::bind. Die ist soweit "getestet". Ist c++11. Falls nicht verfügbar einfach die boost pendants nehmen.
            Sonst noch das hier lesen:
            https://stackoverflow.com/questions/...on-is-expected
            https://isocpp.org/wiki/faq/pointers-to-members

            member-function-pointer != function-pointer. Habe ich mich auch noch nie so mit beschäftigen müssen.

            Hahaha :D
            Zitat aus dem zweiten Link:
            How do I pass a pointer-to-member-function to a signal handler, X event callback, system call that starts a thread/task, etc?

            Don’t.


            Habe das jetzt auch anders gelöst bekommen. Bei solchen Problemen merkt man ja schon daran, dass man sich den Kopf darüber zerbricht, sie so lösen zu wollen, dass es sicher auch auf eine andere Art und Weise schöner geht.

            Da wir ohnehin Qt benutzen löse ich jetzt einfach ein Signal aus, dass dann alles weitere triggert. So ist das deutlich schöner gelöst. Danke für eure Hilfe

            Kommentar


              hab ne linux maschine und will mir mit 'ls -a' den inhalt eines ordners anzeigen lassen. läuft aber jedesmal auf nen timeout. wenn ich mit 'ls -a | head -20' die angezeigten elemente begrenze zeigt er mir die 13 ordner an, die in dem verzeichnis auch richtigerweise sein müssten. jemand ne idee woran das liegen kann? problem ist wenn ich über nen scp client auf die maschine gehe kann ich das nicht wie über die shell eingrenzen und fliege raus.

              Kommentar


                Zitat von BennyQ
                hab ne linux maschine und will mir mit 'ls -a' den inhalt eines ordners anzeigen lassen. läuft aber jedesmal auf nen timeout. wenn ich mit 'ls -a | head -20' die angezeigten elemente begrenze zeigt er mir die 13 ordner an, die in dem verzeichnis auch richtigerweise sein müssten. jemand ne idee woran das liegen kann? problem ist wenn ich über nen scp client auf die maschine gehe kann ich das nicht wie über die shell eingrenzen und fliege raus.
                https://unix.stackexchange.com/a/35332

                mal das probiert? denke du hast auto-color für ls an und nen dir is mounted auf nen remote und du hast keine response deswegen hängt er?

                Kommentar


                  das trifft fast alles zu. auto-color und dass da nen verzeichnis gemountet ist, aber ich kann auf das gemountete verzeichnis zugreifen und mir die daten anzeigen lassen. auch der stat befehl auf dem verzeichnis und den dateien darin funktioniert.

                  Kommentar


                    hängt er denn am mount dir überhaupt?

                    Kommentar


                      Zitat von gestalt
                      hängt er denn am mount dir überhaupt?
                      anscheinend nicht, weil ich darauf zugreifen kann. aber muss wohl doch i.wie daran gelegen haben. habe den mount trotzdem mal rausgworfen und neu eingebunden und jetzt funktionierts wieder. danke!!!

                      Kommentar


                        weiß jemand wie man in einem UML angibt dass eine Instanzvariable festgelegt wird?

                        Kommentar


                          also eine globale Variable in einer Klasse?

                          so hätte ich gesagt

                          Kommentar


                            Moin,
                            hab ne dreistelle Versionsnummer (z.B. 1.1.2) und brauche ne einfache Funktion, die zwei Versionsnummern miteinander vergleicht (z.B. 1.3.4 und 1.6.1) und zurückgibt, welche höher ist. Steh da grad aufm Schlauch

                            Kommentar


                              Zitat von BUSFAHRER
                              Moin,
                              hab ne dreistelle Versionsnummer (z.B. 1.1.2) und brauche ne einfache Funktion, die zwei Versionsnummern miteinander vergleicht (z.B. 1.3.4 und 1.6.1) und zurückgibt, welche höher ist. Steh da grad aufm Schlauch
                              1. Ziffer Vergleichen -> Wenn gleich 2. Ziffer Vergleichen -> Wenn gleich dritte Ziffer usw ? Ziffern sind ja ez durch Punkte getrennt

                              Kommentar


                                Zitat von QTPie
                                Zitat von BUSFAHRER
                                Moin,
                                hab ne dreistelle Versionsnummer (z.B. 1.1.2) und brauche ne einfache Funktion, die zwei Versionsnummern miteinander vergleicht (z.B. 1.3.4 und 1.6.1) und zurückgibt, welche höher ist. Steh da grad aufm Schlauch
                                1. Ziffer Vergleichen -> Wenn gleich 2. Ziffer Vergleichen -> Wenn gleich dritte Ziffer usw ? Ziffern sind ja ez durch Punkte getrennt
                                dieses. kannst einfach string exploden (delimiter .) und werte der arrays vergleichen

                                Kommentar

                                Lädt...
                                X