[cpp][this] przekazanie wskaznika this we wlasnej metodzie
Ostatnio zmodyfikowano 2017-04-03 14:51
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 : #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 |
|
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. |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2017-04-03 10:09:47 zgadza się #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 ... |
|
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 ); |
|
|
aaadam Temat założony przez niniejszego użytkownika |
» 2017-04-03 14:51:40 dobra zmieniłem na : 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 ? |
|
« 1 » |