2013-10-14 57 views
0

我想創建一個SFML RenderWindow對象作爲參數傳遞的對象,但它不是簡單的工作,它始終抱怨指針和我以錯誤的方式使用它們。SFML通過構造函數獲取窗口到另一個類不工作

在這裏,你有我的.h文件:

#include <iostream> 
#include <SFML\System.hpp> 
#include <SFML\Window.hpp> 
#include <SFML\Graphics.hpp> 

using namespace sf; 

class Shot 
{ 
private: 

    RenderWindow &mainWindow; 

public: 

    Shot(RenderWindow &window); 
    void add(float x, float y, float velocity); 

}; 

,在這裏我的.cpp

#include "Shot.h" 

Shot::Shot(RenderWindow &window) : mainWindow(&window) 
{ 
    mainWindow -> window; 
} 

void Shot::add(float x, float y, float velocity) 
{ 
    CircleShape shape(10); 

    shape.setPosition(Vector2f(x, y)); 

    shape.setFillColor(Color::Yellow); 

    mainWindow.draw(shape); 
} 

錯誤:

Error 1 error C2248: 'sf::NonCopyable::operator =' : cannot access private member declared in class 'sf::NonCopyable' 
Error 2 error C2248: 'sf::NonCopyable::operator =' : cannot access private member declared in class 'sf::NonCopyable' 

老實說,我不知道該怎麼現在的問題我可能完成了所有錯誤,但任何幫助真的會被讚賞! :)

問候

FreeSirenety

+0

Shot的構造函數裏面的代碼是什麼? – Broxzier

+0

您的標題和源代碼是相同的。不良複製過去。另外,給我們實際的錯誤信息。除此之外,不要在包含路徑中使用'\':這不是標準。使用'/'代替。 – Hiura

+0

現在編輯並感謝您注意我的misstake! :) – FreeSirenety

回答

1

在您的.cpp文件,你這樣做:

Shot::Shot(RenderWindow &window) : mainWindow(&window) 
{ 
    mainWindow -> window; 
} 

window是一個參考,所以你根本就做:

Shot::Shot(RenderWindow &window) : mainWindow(window) 
{} 

此外,我不會使用using namespace sf;,它可以使代碼conf稍後使用。

相關問題