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

[cpp][this] przekazanie wskaznika this we wlasnej metodzie

Ostatnio zmodyfikowano 2017-04-03 14:51
Autor Wiadomość
aaadam
Temat założony przez niniejszego użytkownika
[cpp][this] przekazanie wskaznika this we wlasnej metodzie
» 2017-04-03 10:01:06
czy można przekazać samego siebie w metodzie ??

mam obiekt Player ktory ma metode update i zastanawiam się czy takie coś jest możliwe :

C/C++
#include "Camera.h"


to sama klasa

class Player
    : public Entity
{
public:
    Player();
    ~Player();
    void LoadContent( std::vector < std::string > attributes, std::vector < std::string > contents );
    void UnloadContent();
    void Update( sf::RenderWindow & Window );
    void Draw( sf::RenderWindow & Window );
    void UpdateEvent( sf::Event event, InputManager input );
    void OnCollision( Entity e2 );
private:
    Camera GameCamera;
    float jumpSize;
    float jumpSpeed;
};

a to metoda


void Player::Update( sf::RenderWindow & Window )
{
   
    GameCamera.Update( Window, this );
   
}

bo wyskakuje mi Taki błąd


Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int
pozdro
P-159746
michal11
» 2017-04-03 10:07:06
Nie pokazałeś deklaracji klasy Camera ale zakładam, ze masz cykliczną zależność, czyli Player includuje Camera a Camera inluduje Player, dlatego pojawia się ten błąd.
P-159747
aaadam
Temat założony przez niniejszego użytkownika
» 2017-04-03 10:09:47
zgadza się

C/C++
#pragma once

#include <SFML/Graphics.hpp>
#include "Player.h"
class Camera
{
    sf::View view;
    sf::Vector2f position;
   
public:
    void Initialize();
    void Update( sf::RenderWindow & window, const Player player );
    Camera();
    ~Camera();
};

mógłbym view umieścić w obiekcie Player ale chyba nie o to chodzi w porgramowaniu obiektowym ...
P-159748
karambaHZP
» 2017-04-03 14:31:02
void Update( sf::RenderWindow & window, const Player player );
Metoda przyjmuje kopię (wartość), a wysyłasz do niej wskaźnik
GameCamera.Update( Window, this );
P-159749
aaadam
Temat założony przez niniejszego użytkownika
» 2017-04-03 14:51:40
dobra zmieniłem na  :
 
C/C++
header

#pragma once

#include <SFML/Graphics.hpp>
#include "Player.h"
class Camera
{
    sf::View view;
    sf::Vector2f position;
   
public:
    void Initialize();
    void Update( sf::RenderWindow & window, const Player * position );
    Camera();
    ~Camera();
};

////////////////////////////////////////////
cpp file




void Camera::Update( sf::RenderWindow & window, const Player * position )
{
    this->position = view.getCenter();
    if( position->position.x + 200 >( this->position.x ) )
         view.move( 0.05, 0 );
   
    window.setView( this->view );
}

w ten sposób tak się w ogóle da ?
P-159750
« 1 »
  Strona 1 z 1