deque



  • Huhuuu ,
    folgendes Prob

    struct waitingPixel {
    		int x, y; 
    	} p;
    int x, y; 
    std::deque <waitingPixel> fifoStack(); 
     p.x = x0; 
     p.y = y0; 
    
    fifoStack.push_back(p);
    

    Wenn ich den push_back aufrufe kommt immer das die Eingabe vom falschen Typ ist?
    Was mach ich denn falsch?

    muss die Deklaration irgendwie so aussehen:
    std::deque <waitingPixel> fifoStack(x,y); ???

    komm damit nicht so richtig klar:) .. kann mir einer helfen?



  • poste mal ein anständiges Code-Beispiel mit Drumherum. Da sieht man ja gar nicht, was wo definiert/deklariert ist.

    und

    typ name();
    

    deklariert eine Funktion und definiert kein Objekt. Siehe most vexing parse



  • hab ich schon mal gesagt, dass keiner lokale funktionsdeklarationen braucht.



  • da gehört sonst kein code dazu,

    aufgabe ist es einen container zu erstellen der in jedem eintrag zwei elemente speichert nach der form

    fifostack[1] = {x1,y1}
    fifostack[2] = {x2,y2}
    usw.

    dazu hab ich mir überlegt wenn ich mir eine structur mit zwei elementen festlege und den container(also deque) darauf caste(deque <waitingPixel>), dann sollte ich 2 elementige elemente in meinen container reinwerfen können xD



  • ok code könnte so aussehen:

    struct waitingPixel {
            int x, y;
                        } p;
    
    int x1=5, y1=6, x2=8, y2=10;
    std::deque <waitingPixel> fifoStack();
     p.x = x1;
     p.y = y1;
    fifoStack.push_back(p);
     p.x = x2;
     p.y = y2;
    fifoStack.push_back(p);
    

    nun sollte in fifoStack drinne stehen:

    fifoStack[1]={5,6}
    fifoStack[2]={8,10}



  • beim debuggen steht aber an jeder stelle nur

    fifoStack = {???,???}

    was hab ich denn falsch gemacht?



  • Bei mir kompiliert das nicht. Statements gehören in eine Funktion rein. Wie gesagt: Lass das Drumherum nicht einfach weg!



  • der rest code bringt doch garnix .. ist doch einfach nur eine definition .. nur das ich die wahrscheinlich falsch gemacht habe

    um deque aufrufen zu können musst du natürlich noch #include <deque> oben hinschreiben 😉



  • #include <deque>
    
    int main(int argc, char **argv)
    {
    
    struct waitingPixel {
            int x, y;
                        } p;
    
    int x1=5, y1=6, x2=8, y2=10;
    std::deque <waitingPixel> fifoStack;
    
     p.x = x1;
     p.y = y1;
    fifoStack.push_back(p);
     p.x = x2;
     p.y = y2;
    fifoStack.push_back(p);
    
    	return 0;	
    }
    

    hier is dein bsp
    also noch mal frage .. warum stehen in fifoStack keine werte(nur mit debugger zu sehen)



  • Das kompiliert immer noch nicht. waitingPixel ist ein lokaler Typ und darf als solcher nicht als Template-Argument verwendet werden.



  • kein plan warum das bei dir nicht kompiliert. jedenfalls geht alles so wie gewollt im debugger werden zwar immer noch nicht die richtigen werte angezeigt viel. kann mir einer erklären warum. aber dieses bsp sollte bei dir auch funzen 😉

    [code]#include <deque>
    #include <iostream>

    int main(int argc, char **argv)
    {

    struct waitingPixel {
    int x, y;
    } p;

    std::deque<waitingPixel> intes;
    p.x=1;
    p.y=2;

    intes.push_back(p);
    int s = intes.front().x;
    int k = intes.back().y;
    std::cout<< s <<" " <<k << std::endl;

    p.x=20;
    p.y=23;

    intes.push_back(p);

    s = intes.back().x;
    k = intes.back().y;
    std::cout<< s <<" " << k << std::endl;
    return 0;
    }[code]



  • nicht registrierter pätti schrieb:

    kein plan warum das bei dir nicht kompiliert. [...] aber dieses bsp sollte bei dir auch funzen 😉

    Habe ich doch gesagt. Dein Programmtext ist kein gültiges C++. Dein Compiler mag gnädig genug sein und darüber hinweg sehen. Meiner ist es nicht.

    nicht registrierter pätti schrieb:

    im debugger werden zwar immer noch nicht die richtigen werte angezeigt viel. kann mir einer erklären warum.

    Du kannst ja mal probieren, ob der Debugger Dir etwas vernünftiges anzeigt, wenn Du Deinem Compiler ein korrektes C++ Programm vorwirfst. Ich kann mir vorstellen, dass beim Microsoft-Debugger die Visualisierung einer STL-Datenstruktur Probleme macht, wenn als Typparameter ein lokales struct verwendet wird. Das ist nämlich, wie gesagt, in C++ nicht erlaubt. Dass es bei Dir kompiliert ist kein Beweis für ein legales C++ Programm. Mit diesem Debugger-Problem bist Du eigentlich hier auch falsch. Hier geht es um die Sprache C++ und nicht um ein Microsoft-Programm.

    kk


Log in to reply