Задать вопрос

C++ не удается определить экземпляр перегруженная функция, использование которого предполагается?

Выдаёт ошибку в классе Player: C++ не удается определить экземпляр перегруженная функция, использование которого предполагается.
Вот сам код:
class Player : public Entity
{
private:
	float x, y;

public:
	int playerScore;
	enum stateObject { LEFT, RIGHT, UP, DOWN, JUMP, STAY } state;

	Player(Image& image, float X, float Y, int W, int H, String Name) :Entity(image, X, Y, W, H, Name)
	{
		playerScore = 0; state = STAY;
		if (name == "Player1")
		{
			sprite.setTextureRect(IntRect(4, 19, w, h));
		}
	}

	void control()
	{
		if (Keyboard::isKeyPressed) 
		{
			if (Keyboard::isKeyPressed(Keyboard::Left)) 
			{
				state = LEFT; speed = 0.1;
			}
			if (Keyboard::isKeyPressed(Keyboard::Right)) 
			{
				state = RIGHT; speed = 0.1;
			}

			if ((Keyboard::isKeyPressed(Keyboard::Up)) && (onGround)) 
			{
				state = JUMP; dy = -0.6; onGround = false;
			}

			if (Keyboard::isKeyPressed(Keyboard::Down)) 
			{
				state = DOWN;
			}
		}
	}

	void update(float time)
	{
		control();
		switch (state)
		{
		case RIGHT:dx = speed; break;
		case LEFT:dx = -speed; break;
		case UP: break;
		case DOWN: dx = 0; break;
		case STAY: break;			
		}
		x += dx * time;
		checkCollisionWithMap(dx, 0);
		y += dy * time;
		checkCollisionWithMap(0, dy);
		sprite.setPosition(x + w / 2, y + h / 2); 
		if (health <= 0) { life = false; }
		if (!isMove) { speed = 0; }
		//if (!onGround) { dy = dy + 0.0015*time; }
		if (life) { setPlayerCoordinateForView(x, y); }
		dy = dy + 0.0015 * time;
	}

	void interactionWithMap()
	{

		for (int i = y / 32; i < (y + h) / 32; i++)
			for (int j = x / 32; j < (x + w) / 32; j++)
			{
				if (TileMap[i][j] == '0')
				{
					if (dy > 0)
					{
						y = i * 32 - h;
					}
					if (dy < 0)
					{
						y = i * 32 + 32;
					}
					if (dx > 0)
					{
						x = j * 32 - w;
					}
					if (dx < 0)
					{
						x = j * 32 + 32;
					}
				}

				if (TileMap[i][j] == 's') {
					playerScore++;
					TileMap[i][j] = ' ';
				}

				if (TileMap[i][j] == 'f')
				{
					health -= 40;
					TileMap[i][j] = ' ';
				}

				if (TileMap[i][j] == 'h')
				{
					health += 40;
					TileMap[i][j] = ' ';
				}
			}
	}

	void checkCollisionWithMap(float Dx, float Dy)
	{
		for (int i = y / 32; i < (y + h) / 32; i++)
			for (int j = x / 32; j < (x + w) / 32; j++)
			{
				if (TileMap[i][j] == '0')
				{
					if (Dy > 0) { y = i * 32 - h;  dy = 0; onGround = true; }
					if (Dy < 0) { y = i * 32 + 32;  dy = 0; }
					if (Dx > 0) { x = j * 32 - w; }
					if (Dx < 0) { x = j * 32 + 32; }
				}
				//else { onGround = false; }//надо убрать т.к мы можем находиться и на другой поверхности или платформе которую разрушит враг
			}
	}

};
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Средний 5 комментариев
Решения вопроса 1
@adg2004
Где полный вывод консоли после компиляции? Где код класса Entity?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы