来自同一父级的另一个子类中的 return 函数不返回任何内容

return function in another child class from the same parent returns nothing

本文关键字:函数 return 返回 任何内 另一个 子类      更新时间:2023-10-16

好吧,所以我有 3 个类,其中 2 个是子类。父类是实体类,它有一个获取精灵坐标的函数。如果我在main()中运行这个函数,它可以正常工作。

然后我有一个 Wolf 类,它需要一个在其构造函数中传递的玩家。在狼中.cpp有一个更新函数,我每次滴答都会运行它,它需要为玩家获取坐标。

我的猜测是我错误地传入了播放器,它制作了一个副本或其他东西。但是我不知道如何正确地做到这一点,现在在谷歌上搜索并没有真正的帮助。对我来说最好的事情就是直接回答。以下是子类。如果您还需要实体类,请告诉我。

沃尔夫·

#pragma once
#include "Entity.h"
#include "Player.h"
class Wolf : public Entity{
public:
    Wolf(float speed, Player p);
    sf::Clock clock;
    sf::Vector2f playerCoords;
    Player player;
public:
    void update();
};

狼.cpp

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "Wolf.h"
#include <iostream>
#include "math.h"
sf::Texture holdTexture; 
sf::Sprite holdSprite;

Wolf::Wolf(float speed, Player p) :
    Entity(holdSprite, speed),
    player(p)
{
    holdTexture.loadFromFile("Assets\Wolf.png");
    sprite.setTexture(holdTexture);
}

玩家.h

#pragma once
#include "Entity.h"
class Player : public Entity {
public:
    Player(sf::Sprite sprite, float speed);
    sf::Clock clock;
public:
    void update();
};

播放器.cpp

#include "Player.h"
Player::Player(sf::Sprite sprite, float speed) :
    Entity(sprite, speed)
{}
您可能

希望引用Player

class Wolf : public Entity{
public:
    Wolf(float speed, Player& p);
                         // ^
    sf::Clock clock;
    sf::Vector2f playerCoords;
    Player& player; // <<<<<<<<<<
       // ^
public:
    void update();
};
Wolf::Wolf(float speed, Player& p) :
                           // ^
    Entity(holdSprite, speed),
    player(p)
{
    // ...
}

这应该可以解决您的问题。