Vector in Queue



  • Hallo!

    Ich habe da ein kleines Problem:

    Ich habe folgenden Sourcecode geschrieben (reduziert auf die interessanten Funktionen):

    1.hpp:

    class x
    {
        public: 
            // Base methods
            x ();
    
        private: 
            // Actual service functions
    
            EReturnCode x::doToServer(
                std::vector<unsigned char> &data);
    
            EReturnCode x::doFromServer(
                std::vector<unsigned char> &data);
    
            std::queue<std::vector<unsigned char> > resultQUE;
    };
    

    1.cpp:

    EReturnCode x::doToServer(
        std::vector<unsigned char> &data)
        {
            std::vector<unsigned char> tmpV;
            unsigned char tester;
    
            tmpV.resize(5); //hier zum Testen fest gesetzt, normal variabel
            tmpV[0] = data[4];
            tmpV[1] = data[3];
            tmpV[2] = data[2];
            tmpV[3] = data[1];
            tmpV[4] = data[0];
    
            resultQUE.push(tmpV);
            return SUCCESS;
        }
    
    EReturnCode x::doFromServer(
        std::vector<unsigned char> &data)
        {
            data = resultQUE.front();
            resultQUE.pop();
            return SUCCESS;
        }
    

    Sinn dieses Codes ist es Daten über die Funktion 'doToServer' zu empfangen, zu manipulieren u. in einer queue abzuspeichern. Die verarbeiteten Daten sollen dann anschließend über 'doFromServer' abgeholt werden können.

    Meine Idee ist es die Zwischenspeicherung in einer Queue zu lösen, nur habe ich das Problem, dass ich munter Werte in die Queue schreiben kann (sie wird auch immer größer) nur, wenn ich versuche sie über die 2. Funktion wieder herauszuholen ist sie immer leer (schon bevor ich Daten über resultQUE.front() heraushole). 😡

    Vielen Dank für Eure Hilfe im Voraus

    Andreas



  • Wie sehen denn die Aufrufe auf für die do... Funktionen aus?



  • Hab den Fehler gefunden:

    Die Aufrufe der Funktion geht durch eine ganze Hirarchie von Klassen, wobei mittendrin Funktionen ohne Instanzbildung aufgerufen werden (den Code habe ich nicht verbrochen!!). Solange ich immer die selbe Funktion aufgerufen habe (x::doToServer), habe ich auch auf die selbe Instanz zugegriffen, sobald ich eine andere Funktion aufgerufen habe (x::doFromServer) war ich in einer neuen Instanz, die natürlich die Elemente in der Queue der anderen Instanz nicht sehen kann..... 🤡

    Da ich bis jetzt leider noch nie etwas mit der STL zu tun hatte, war ich mir nicht sicher, ob der Fehler nicht in der Anwendung der Queue liegt....

    Grüße



  • Vor Urzeiten von fortune an den Kopf geworfen bekommen und durch den Threadtitel wieder hochassoziiert:

    Segmentation Violation: Core Dumped Blues

    Well, my terminal's locked up, and I ain't got any Mail,
    And I can't recall the last time that my program didn't fail;
    I've got stacks in my structs, I've got arrays in my queues,
    I've got the : Segmentation violation -- Core dumped blues.

    If you think that it's nice that you get what you C,
    Then go : illogical statement with your whole family,
    'Cause the Supreme Court ain't the only place with : Bus error views.
    I've got the : Segmentation violation -- Core dumped blues.

    On a PDP-11, life should be a breeze,
    But with VAXen in the house even magnetic tapes would freeze.
    Now you might think that unlike VAXen I'd know who I abuse,
    I've got the : Segmentation violation -- Core dumped blues.
    -- Core Dumped Blues


Anmelden zum Antworten