对另一个类函数的调用中的c++类函数
c++ class function inside call to another class function
我目前正在用c++和sfml 2.3开发我的塔防游戏,有3个等级的
我的主cpp文件中的代码片段
问题:当RangeCollision()在tower.h类中被调用时,我想将一些变量发送到不同的类(mobs类)以实现ReduceMinionHealth函数,并让它降低小黄人的健康度
#include <Defines.h> //defining bunch of includes and defines
#include "Mobs.h"
#include "Towers.h"
#include "MainClass.h"
int main() {
MainClass* mainObj = new MainClass();
TowerClass* towerObj = new TowerClass();
MobsClass* mobsObj = new MobsClass();
//keeps checking for actions and detecting clicks
towerObj->BulletCollision(mobsObj->Mob1v, speedMultiplier); //detects when bullet reached minion
if (mainObj->waveStarted) mobsObj->MobPathing(speedMultiplier); //minions moving their path
//drawing sprites
return(0);
}
MainClass.h文件
#ifndef MainClass_h
#define MainClass_h
#include "Defines.h"
class MainClass {
static int map[];
public:
static int coins, lives;
static bool waveStarted;
MainClass::MainClass() {
//constructor loading some stuff
}
//bunch of functions
};
tower.h类文件
#ifndef Towers_h
#define Towers_h
#include <Defines.h>
#include "MainClass.h"
class TowerClass: public MainClass {
private:
vector<int> towerDmg;
vector<int> towerCost;
vector<float> towerRange;
public:
bool Clicked;
float dx, dy, magnitude;
//loading textures and other variables
typedef struct {
//sprites, tower params
vector<Sprite> bullet;
vector<int> shootAt;
}towerParamStruct;
vector<towerParamStruct> TowerParam;
TowerClass::TowerClass() {
//constructor
}
void BulletCollision(vector<Sprite> &Mob1v, float speedMultiplier) {
//doing some stuff and at some point calling
MobsClass::MinionHealthReduce(int i, double DamageDealt) //gives me error
}
};
低于的mobs.h类
#ifndef Mobs_h
#define Mobs_h
#include "Defines.h"
#include "MainClass.h"
class MobsClass: public MainClass {
private:
vector<double> *Health, *levelHealth;
vector<int> *levelMobsCount, *levelCoins;
public:
Sprite Mob1;
vector<Sprite> Mob1v;
MobsClass::MobsClass() {
//constructor which prepares for first wave
}
void MinionHealthReduce(int i, double DamageDealt) {
if (Health->at(i) > 0) {
//recalculating hp bar
Health->at(i) = Health->at(i) - DamageDealt;
}
if (Health->at(i) <= 0) {
//add coins because u killed minion
//destroys minion
}
}
};
我相信我在以下行中看到了您的错误:
MobsClass::MinionHealthReduce(int i, double DamageDealt)
我可以看到3个错误:
-
没有分号
-
需要使用对象调用
-
无法使用
(int i, double DamageDealt)
调用
固定版本:
MobsClass* mobsObj = new MobsClass();
mobsObj.MinionHealthReduce(i, DamageDealt);
我相信这应该能解决你的问题,但我不太确定到底是什么问题。如果是传递变量,请记住通过引用传递它们。
编辑:我正试图理解泽里奥·卡拉姆在评论中所说的话。我刚看了评论。
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 启动类函数作为失去引用的线程
- C++调用使用重写函数的父类函数
- 将值传递到另一个类函数在打印时为零
- 计算对类函数的所有调用次数
- 由于签名差异,调用了错误的子类函数
- 使用宏调用类函数
- 虚拟基类函数中派生类的大小
- 模板类/函数中的交叉前向声明
- 在C++中使用非静态类函数的函数
- 无法访问基类函数 C++
- 类函数返回到另一个类函数返回打印不同的值
- C++ 在外部使用嵌套结构实现类函数