View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Problem with my Collision with c++ and SFML

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

### #1Crusable  Members

Posted 03 February 2013 - 01:57 AM

Hello, I have been making a pong clone and I have run into some trouble with collision. It is not that I cannot get collision to work, it is(I think) my approach that is flawed. I have searched on google for help, however I could not find anything.

collision.h



#ifndef COLLISION_H
#define COLLISION_H

#include <SFML\Graphics.hpp>

#include "Ball.h"
#include "Player.h"
#include "Enemy.h"

class Collision{

public:
Collision();
~Collision();

//return true if there is a collision detected
bool BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL); //BOP = boundries on paddle
bool BOB_Collision(sf::RenderWindow& App, const Ball* const ball); //BOB = boundries on ball
bool POB_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL, const Ball* const ball = NULL); //POB = paddle on ball

private:
sf::Vector2f pVector; //vector for the player
sf::Vector2f eVector; //vector for the enemy
sf::Vector2f bVector; //vector for the ball

};

#endif



collision.cpp


#include "Collision.h"

Collision::Collision(){}

Collision::~Collision(){}

bool Collision::BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL){

pVector = player->getPosition();
eVector = enemy->getPosition();
}

bool Collision::BOB_Collision(sf::RenderWindow& App, const Ball* const ball){

}

bool Collision::POB_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL, const Ball* const ball = NULL){

}


The error is with

pVector = player->getPosition()
. It says "Error: the object has type qualifiers that are not compatible with the member function". Thank you in advance for all your help.

### #2ultramailman  Prime Members

Posted 03 February 2013 - 02:21 AM

I am guessing your getPosition method is lacking a const on the right hand side of the method signature.
If I guessed right, it should be something like this:
class Player
{
public:
Vector getPosition() const; //<- this const
};


Edited by ultramailman, 03 February 2013 - 02:24 AM.

### #3Crusable  Members

Posted 03 February 2013 - 02:26 AM

Why does it need to be constant? Also, thank you, It did work.

Edited by Mathew Bergen, 03 February 2013 - 02:27 AM.

### #4ultramailman  Prime Members

Posted 03 February 2013 - 02:37 AM

Look at this signature:
bool Collision::BOP_Collision(sf::RenderWindow& App, const Player* const player = NULL, const Enemy* const enemy = NULL);

The player variable is of type
const Player * const

That means the pointer and the object it points should not be changed while in this function. So if you call a read-write (not const)method on player, the compiler will tell you it's an error. That's why the method should be declared as read-only (has that const on the right side).

It's a good idea to make a method const, if the method does not modify the object.

Edited by ultramailman, 03 February 2013 - 02:39 AM.

### #5Crusable  Members

Posted 03 February 2013 - 02:41 AM

Thank you.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.