gpt4 book ai didi

c++ - 如何覆盖基类中的构造函数?

转载 作者:行者123 更新时间:2023-11-28 06:31:05 25 4
gpt4 key购买 nike

我正在用 C++ 制作游戏。我有一个玩家和敌人类继承了我的暴民类。我希望我在敌人类中的构造函数具有与我的暴民类不同的构造函数,但它似乎不起作用。

Mob.h

#pragma once

#include <SFML/Graphics.hpp>

class Mob
{
public:
Mob();
~Mob();

void update();
void render();

protected:
static sf::Sprite mSprite;

static float mSpeed;
};

Mob.cpp

#include <SFML/Graphics.hpp>
#include "Enemy.h"
#include "Player.h"

Mob::Mob()
{

}

Mob::~Mob() {

}

敌人.h

#pragma once

#include <SFML/Graphics.hpp>
#include "Mob.h"

class Enemy : public Mob
{
public:
Enemy(sf::Sprite sprite);
~Enemy();

void update(float delta, Player player);
void render(sf::RenderWindow& window);
};

敌人.cpp

#include <SFML/Graphics.hpp>
#include "Enemy.h"
#include "Player.h"

Enemy::Enemy(sf::Sprite sprite)
{
mSprite = sprite;

mSpeed = 150.0f;
}

Enemy::~Enemy() {

}

void Enemy::update(float delta, Player player) {

}

void Enemy::render(sf::RenderWindow& window) {
window.draw(mSprite);
}

播放器.h

#pragma once

#include <SFML/Graphics.hpp>
#include "Mob.h"

class Player : public Mob
{
public:
Player(sf::Sprite sprite);
~Player();

void update(float delta);
void render(sf::RenderWindow& window);
};

播放器.cpp

#include <SFML/Graphics.hpp>
#include "Player.h"

Player::Player(sf::Sprite sprite)
{
mSprite = sprite;

mSpeed = 150.0f;
}

Player::~Player() {

}

void Player::update(float delta) {

if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
mSprite.move(0, -mSpeed * delta);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
mSprite.move(-mSpeed * delta, 0);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
{
mSprite.move(0, mSpeed * delta);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
mSprite.move(mSpeed * delta, 0);
}
}

void Player::render(sf::RenderWindow& window) {
window.draw(mSprite);
}

忘记添加我的错误:

Error   3   error C2511: 'void Enemy::update(float,Player)' : overloaded member function not found in 'Enemy'   c:\dev\c++\sven\sven\enemy.cpp  16  1   Sven
Error 1 error C2061: syntax error : identifier 'Player' c:\dev\c++\sven\sven\enemy.h 12 1 Sven
Error 2 error C2061: syntax error : identifier 'Player' c:\dev\c++\sven\sven\enemy.h 12 1 Sven

最佳答案

在 Enemy.h 中你有 void update(float delta, Player player);。编译器怎么知道什么是剧本?它不能,因为您从未将 player.h 文件包含在 enemy.h 中。你必须选择解决这个问题,你可以包括 player.h 或者你可以 forward declare播放器并更改函数以获取指向播放器的指针。

关于c++ - 如何覆盖基类中的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com