gpt4 book ai didi

c++ - 在 .h 和 .cpp 文件中继承构造函数

转载 作者:行者123 更新时间:2023-11-28 01:03:07 25 4
gpt4 key购买 nike

所以我有两个类:Object 和 Player。我希望 Player 继承自 Object,因为 Object 具有我需要的基本功能。Player 有它的附加功能,可以扩展 Object 的功能。我有四个文件:Object.cpp、Object.h、Player.cpp 和 Player.h。

为了根据我的情况举个例子,我在我的 Player 类中添加了一个变量:播放器变量。我的 Object 构造函数参数不包含此参数,但我的 Player 构造函数包含此参数,因此您可以看到 Player 扩展了 Object。

无论如何,这是我的代码:

对象.h:

#include <hge.h>
#include <hgesprite.h>
#include <hgeanim.h>
#include <math.h>

class Object{
int x, y;
HTEXTURE tex;
hgeAnimation *anim;
float angle, FPS, velocity;

public:
Object(int x, int y, HTEXTURE tex, float FPS);
//Setters
void SetX(int x);
void SetY(int y);
void SetSpeed(int FPS); //Image Speed
void SetAngle(float angle); //Image Angle
void SetVelocity(float velocity); //Object Speed/Velocity
//Getters
};

对象.cpp:

/*
** Object
**
*/
#include <hge.h>
#include <hgesprite.h>
#include <hgeanim.h>
#include <math.h>
#include "Object.h"

Object::Object(int x, int y, HTEXTURE tex, float FPS){
this->x = x;
this->y = y;
this->tex = tex;
this->FPS = FPS;
}
//Setters
void Object::SetX(int x){
this->x = x;
}

void Object::SetY(int y){
this->x = x;
}

void Object::SetSpeed(int FPS){
this->FPS = FPS;
anim->SetSpeed(FPS);
}

void Object::SetAngle(float angle){
this->angle = angle;
}

void Object::SetVelocity(float velocity){
this->velocity = velocity;
}

//Getters

播放器.h:

#include <hge.h>
#include <hgesprite.h>
#include <hgeanim.h>
#include <math.h>
#include "Object.h"

class Player : public Object{
int playerVariable;

public:
Player(int x, int y, HTEXTURE tex, float FPS, int playerVariable);
//Setters
void SetX(int x);
void SetY(int y);
void SetSpeed(int FPS); //Image Speed
void SetAngle(float angle); //Image Angle
void SetVelocity(float velocity); //Object Speed/Velocity
//Getters
};

播放器.cpp:

/*
** Object
**
*/
#include <hge.h>
#include <hgesprite.h>
#include <hgeanim.h>
#include <math.h>
#include "Object.h"
#include "Player.h"

Player::Player(int x, int y, HTEXTURE tex, float FPS, playerVariable){
this->x = x;
this->y = y;
this->tex = tex;
this->FPS = FPS;
}
//Setters
void Object::SetX(int x){
this->x = x;
}

void Object::SetY(int y){
this->x = x;
}

void Object::SetSpeed(int FPS){
this->FPS = FPS;
anim->SetSpeed(FPS);
}

void Object::SetAngle(float angle){
this->angle = angle;
}

void Object::SetVelocity(float velocity){
this->velocity = velocity;
}

//Getters

我的问题是,我不确定我的设置是否正确。我看过关于继承的教程,但我不知道如何同时设置它.h 文件和类的 .cpp 文件。有人可以帮忙吗?

最佳答案

您正在定义 Object 功能两次。您无需定义它,它将继承自 Object 并自动在 Player 上可用。

您的Player 构造函数需要调用基础Object 构造函数。这是通过构造函数初始化列表完成的:

Player::Player(int x, int y, HTEXTURE tex, float FPS, playerVariable)
: Object(x, y, tex, FPS) // forward arguments to base constructor
{}

关于c++ - 在 .h 和 .cpp 文件中继承构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800002/

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