2016-05-05 6 views
-1

Ich habe ein Problem mit meinen DrawCircles (Fenster); Methode.SMFL "Kann nicht referenziert werden, es ist eine gelöschte Funktion"

Wenn ich versuche, "Fenster" zu übergeben, erhalte ich den Fehler in meinem Titel.

Irgendeine Idee, wie ich das lösen könnte? Auch eine Erklärung wäre dankbar, danke.

Hier ist mein Code:

#include <SFML/Graphics.hpp> 
#include <vector> 
using namespace std; 


vector<sf::CircleShape> Shapes; 


int main() { 

    sf::RenderWindow window(sf::VideoMode(1280, 720), "Conduit"); 




    while (window.isOpen()) { 

     sf::Event event; 
     while (window.pollEvent(event)) { 

      if (event.type == sf::Event::Closed) 
       window.close(); 
     } 

     window.clear(); 
     DrawCircles(window);   // ERROR IS THIS LINE. 
     //window.draw(shape); 
     window.display(); 
    } 

} 


void RenderCircle() 
{ 
    sf::CircleShape shape; 
    shape.setRadius(40.f); 
    shape.setPosition(100.f, 100.f); 
    shape.setFillColor(sf::Color::Cyan); 

    Shapes.push_back(shape); 
} 

void DrawCircles(sf::RenderWindow window) 
{ 

    for (int i = 0; i < Shapes.size(); i++) 
    { 
     window.draw(Shapes.at(i)); 
    } 
} 
+0

Wie würde ich das tun? –

Antwort

0

Bitte versuchen Sie einen Prototyp Ihrer DrawCircles Methode an der Spitze des Codes hinzufügen. Und fügen Sie alle Prototypen der anderen Methode hinzu. Versuchen Sie dies:

#include <SFML/Graphics.hpp> 
    #include <vector> 
    using namespace std; 


    void DrawCircles(sf::RenderWindow &window); 
    vector<sf::CircleShape> Shapes; 
    .. rest of code 

void DrawCircles(sf::RenderWindow &window) 
{ 

    for (int i = 0; i < Shapes.size(); i++) 
    { 
     window.draw(Shapes.at(i)); 
    } 
} 
+0

Okay, nun, das sind buchstäblich alle, abgesehen von void RenderCircle() selbst. –

+0

Danke, das hat funktioniert, jede Erklärung, warum das funktioniert? hat es etwas mit Zeigern zu tun? –

+0

Froh, es hat funktioniert. Es geht darum, ein sf :: RenderWindow zu kopieren. Wenn Sie kein & verwenden (was eine Referenz bedeutet), versuchen Sie, Ihr sf :: RenderWindow zu kopieren. Sf :: RenderWindow kann jedoch nicht kopiert werden (zum Kopieren von Objekten verwenden Klassen Kopierkonstruktoren, die sf :: RenderWindow nicht hat). Wenn Sie hier eine Referenz verwenden, kopieren Sie nicht oder versuchen, etwas zu kopieren, sondern verwenden genau dasselbe sf :: RenderWindow, das Sie in Ihrer Hauptfunktion deklariert haben. Ich hoffe es hilft. – MindRoller

Verwandte Themen