[英]c++ class function inside call to another class function
我目前正在使用3類c ++和sfml 2.3開發我的塔防游戲
我的主要cpp文件中的代碼片段
問題:當在tower.h類中調用RangeCollision()時,我想將一些變量發送到不同的類(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);
我相信這應該可以解決您的問題,但是我不太確定問題到底出在哪里。 如果是關於傳遞變量的事情,請記住通過引用傳遞它們。
編輯:我試圖理解Zehryo Karham在評論中說的話。 我只是讀評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.