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

[SFML] 'sf::Transformable' is not an accessible base of 'Gracz'

Ostatnio zmodyfikowano 2020-03-26 19:30
Autor Wiadomość
R0ut4
Temat założony przez niniejszego użytkownika
[SFML] 'sf::Transformable' is not an accessible base of 'Gracz'
» 2020-03-26 15:54:08
main.cpp
C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "gracz.hpp"
#include "sterowanie.hpp"
#include <iostream>

using namespace std;
enum Stan
{
    Menu, Gra, Esc
};
void setPosition( int x, int y );
int main()
{
    sf::RenderWindow aplikacja( sf::VideoMode( 840, 720 ), "Ogrod" );
    aplikacja.setFramerateLimit( 60 );
    Stan stan = Menu;
   
    Gracz player;
    player.setOrigin( 100, 100 );
   
    sf::Texture tekstura_menu;
    tekstura_menu.loadFromFile( "Menu.png" );
    sf::Texture tekstura_start;
    tekstura_start.loadFromFile( "przycisk_start.png" );
   
    sf::Sprite tlo_menu;
    tlo_menu.setTexture( tekstura_menu );
    sf::Sprite sp_start;
    sp_start.setTexture( tekstura_start );
   
    while( aplikacja.isOpen() )
    {
        sf::Event event;
        while( aplikacja.pollEvent( event ) )
        {
            if( event.type == sf::Event::Closed )
            {
                aplikacja.close();
            }
        }
        switch( stan )
        {
            //OBSlUGA ZDARZEN W MENU
        case Menu:
            Ruch_postaci( player );
           
            break;
            //OBSLUGA ZDARZEN W GRZE
        case Gra:
           
            break;
            //OBSLUGA ZDARZEN W ESC
        case Esc:
           
            break;
        }
       
        aplikacja.clear();
        switch( stan )
        {
            //WYSWIETLANIE ZDARZEN W MENU
        case Menu:
            aplikacja.draw( tlo_menu );
            aplikacja.draw( sp_start );
            aplikacja.draw( player );
            break;
            //WYSWIETLANIE ZDARZEN W GRZE
        case Gra:
           
            break;
            //WYSWIETLANIE ZDARZEN W ESC
        case Esc:
           
            break;
        }
        aplikacja.display();
    }
    return 0;
}

ster.hpp i cpp
C/C++
#ifndef sterowanie_hpp
#define sterowanie_hpp
#include "gracz.hpp"
void Ruch_postaci( Gracz & hero );
#endif // sterowanie_hpp
/////////////////////////////
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "sterowanie.hpp"
#include "gracz.hpp"

void Ruch_postaci( Gracz & hero )
{
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::W ) )
    {
        hero.move( 0, - 3 );
    }
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::S ) )
    {
        hero.move( 0, 3 );
    }
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::A ) )
    {
        hero.move( - 3, 0 );
    }
    if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
    {
        hero.move( 3, 0 );
    }
}

gracz.hpp i cpp
C/C++
#ifndef gracz_hpp
#define gracz_hpp

class Gracz
    : public sf::Drawable
     , sf::Transformable
{
private:
    virtual void draw( sf::RenderTarget & target, sf::RenderStates states ) const;
};
#endif // gracz_hpp
//////////////////////////////////////////////////////
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "gracz.hpp"

void Gracz::draw( sf::RenderTarget & target, sf::RenderStates states ) const
{
    sf::VertexArray P( sf::Quads, 4 );
    P[ 0 ].position = sf::Vector2f( 200, 200 );
    P[ 1 ].position = sf::Vector2f( 400, 200 );
    P[ 2 ].position = sf::Vector2f( 400, 400 );
    P[ 3 ].position = sf::Vector2f( 200, 400 );
   
    sf::Texture textura;
    textura.loadFromFile( "gracz.png" );
    //sf::Sprite P;
    //P.setTexture (textura);
    P[ 0 ].texCoords = sf::Vector2f( 0, 0 );
    P[ 1 ].texCoords = sf::Vector2f( 50, 0 );
    P[ 2 ].texCoords = sf::Vector2f( 50, 50 );
    P[ 3 ].texCoords = sf::Vector2f( 0, 50 );
   
    states.texture = & textura;
    target.draw( P, states );
}

Errory:
||=== Build: Debug in ogrod (compiler: GNU GCC Compiler) ===|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp||In function 'int main()':|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|145|error: 'void sf::Transformable::setOrigin(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\main.cpp|20|error: within this context|
C:\Users\Routa\Desktop\ogrod\main.cpp|20|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp||In function 'void Ruch_postaci(Gracz&)':|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|10|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|10|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|14|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|14|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|18|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|18|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|22|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|22|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
||=== Build failed: 15 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
P-176513
pekfos
» 2020-03-26 18:45:05
Rodzaj dziedziczenia się określa niezależnie dla każdej klasy bazowej. Nie masz public przed sf::Transformable.
P-176519
R0ut4
Temat założony przez niniejszego użytkownika
» 2020-03-26 19:30:06
Działa, przypadkie usunąłem to słowo xd
P-176524
« 1 »
  Strona 1 z 1