gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:36:04 26 4
gpt4 key购买 nike

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

然后我有 Wolf 类,它需要在其构造函数中传递一个玩家。在 wolf.cpp 中有一个更新函数,我在每个刻度运行它,它需要为玩家获取坐标。

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

狼.h

#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)
{
// ...
}

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

关于c++ - 来自同一个父类的另一个子类中的返回函数不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38280004/

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