2016-05-05 57 views
-1

我的DrawCircles(窗口)有問題;方法。SMFL「不能被引用,它是一個被刪除的函數」

當我嘗試傳入「窗口」時,我的標題中出現錯誤。

任何想法如何解決這個問題?另外,我將不勝感激,謝謝。

這裏是我的代碼:

#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

我該怎麼做? –

回答

0

請嘗試在你的代碼的頂部添加一個原型你DrawCircles方法。並添加所有其他方法的原型。試試這個:

#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

好的,好吧,從字面上來看,它們全都是void RenderCircle()本身的旁白。 –

+0

謝謝你,這工作,任何解釋爲什麼這個工程?這與指針有關嗎? –

+0

很高興工作。這完全是關於複製sf :: RenderWindow。如果你不使用&(意思是引用) - 你試圖複製你的sf :: RenderWindow。然而,不能複製sf :: RenderWindow(複製對象,類使用複製構造函數,sf :: RenderWindow沒有)。如果你在這裏使用引用,你不復制或試圖複製任何東西,你只是使用你在主函數中聲明的同樣精確的sf :: RenderWindow。希望能幫助到你。 – MindRoller

相關問題