Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SFML - problem z konwersją

Ostatnio zmodyfikowano 2011-12-03 16:25
Autor Wiadomość
Dawidsoni
Temat założony przez niniejszego użytkownika
SFML - problem z konwersją
» 2011-12-02 23:55:35
Witam. Napisałem własną klasę i chcę, aby można było ją skonwertować na klasę Sprite, tak żeby do funkcji można było przesłać obiekt tej klasy. Kod wygląda tak:

część main.cpp
C/C++
Obiekt obiekt1;
Okno.Draw( obiekt1 );

część Obiekt.h
operator Sprite() { return * sprajt; }

Według tego, co myślę, metoda Draw klasy RenderWindow oczekująca obiekt klasy Sprite, powinna zadziałać, dzięki konwersji klasy Obiekt na klasę Sprite. Jednak są takie błędy kompilacji:

error: invalid abstract return type for member function 'dw::Obiekt::operator sf::Drawable()'|
note:   because the following virtual functions are pure within 'sf::Drawable':|
note: virtual void sf::Drawable::Render(sf::RenderTarget&) const|
error: invalid abstract return type for member function 'dw::Obiekt::operator sf::Drawable()'|
note:   since type 'sf::Drawable' has pure virtual functions|
error: cannot allocate an object of abstract type 'sf::Drawable'|
note:   since type 'sf::Drawable' has pure virtual functions|
error: cannot allocate an object of abstract type 'sf::Drawable'|
note:   since type 'sf::Drawable' has pure virtual functions|

Proszę o pomoc i wytłumaczenie.
P-45077
akwes
» 2011-12-03 00:17:15
Ale Ty tutaj chcesz przeciążyć operator a nie zrobić własną konwersję?

Używasz przestrzeni nazw? Czy może sf::Sprite nie powinno być?
P-45078
Dawidsoni
Temat założony przez niniejszego użytkownika
» 2011-12-03 10:17:36
A jaka różnica? Z tego co dotąd rozumiałem przeciążenie operatora ma powodować zamianę typu Obiekt na typ Sprite. (konwersję). Jak inaczej mogę to zrobić, żeby działało?
P-45083
DejaVu
» 2011-12-03 11:45:12
Jak tworzysz własny obiekt i chcesz używać SFML-a to używaj klas, które dostarcza SFML. Przykład:
C/C++
CObiekt
{
public:
    sf::Sprite obrazek;
};

//...
CObiekt obiekt;
oknoAplikacji.Draw( obiekt.obrazek );
P-45085
Dawidsoni
Temat założony przez niniejszego użytkownika
» 2011-12-03 16:25:40
A nie mogę zrobić tak, aby w funkcji Draw zamiast pisać "obiekt.obrazek", mógłbym pisać "obiekt"?
P-45100
« 1 »
  Strona 1 z 1