2016-05-04 13 views
-3

Ich schreibe einen Code für 3D-Welt zu 2D-Projektion und wie ich versuche, Koordinaten in meinen Vektoren zurückzuschieben, gibt es mir diesen Fehler, dass es keine übereinstimmende Funktion zu nennen gibt Std :: Vektor.Keine passende Funktion, um std :: vector anzurufen

#include <X11/Xlib.h> 
#include "draw.h" 
#include "points.h" 
#include "unistd.h" 
#include <math.h> 
#include <vector> 



void draw(Display* d, Window w, GC gc) 
{ 
    std::vector<float> xpoints; 
    xpoints.push_back (-1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0); 

    std::vector<float> ypoints; 
    ypoints.push_back (1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0); 

    std::vector<float> zpoints; 
    zpoints.push_back (-1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0); 

    for (;;) 
    { 

     XClearWindow(d, w); 

     for (unsigned int c = 0; c < xpoints.size(); c++) 
     { 
      XDrawLine(d, w, gc, xpoints.at(c), ypoints.at(c), xpoints.at(c+1), ypoints.at(c+1)); 
     } 
     XFlush(d); 
     usleep(16666); 
    } 
} 
+1

Ich sehe nicht, wo Sie den Vektorkopf einfügen? add '' include ' – EdChum

+0

Auch wenn Sie Fehler haben, sollten Sie sie in Ihre Frage und die Zeile, die es auftritt – EdChum

+0

Bitte unterschreiben Sie Ihre Fragen nicht. Lesen Sie auch [fragen]. – dandan78

Antwort

3

Sie können nicht mehrere Werte drücken auf einmal push_back mit:

xpoints.push_back (-1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0); 

Wenn Sie c++11 verwenden Sie Ihre Vektor direkt initialisieren sollte:

std::vector<float> xpoints{-1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0}; 
+0

Danke, das hat funktioniert. –

0

schließen Sie einfach den Vektor-Header:

#include <vector> 
+0

Oh mein Schlechter ich habe es nicht eingefügt, aber ich lief diesen Code vorher in einer anderen .cpp Datei, wo es die #include Header hatte, so wusste ich bereits, dass das nicht das Problem war, aber danke, dass es auf mich . –

Verwandte Themen