Доступ к защищенным данным члена класса
Я хочу сделать класс супергероем который содержит защищенные данные здоровье члена и функцию члена:
1 - нестандартный конструктор, который инициализирует работоспособность при вводе >100 до 100
2-применить функцию питания, которая берет указатель супер героя класса P и лечит его, увеличивая здоровье на 10.
и еще один класс супер истребитель который содержит личные данные участника:
огневая мощь представляет собой огневую мощь, которую может представлять поплавок
Функции публичных членов:
1-не конструктор по умолчанию, который принимает здоровье и огневую мощь и инициализирует элемент данных.
2-Applypower: он принимает указатель класса супергероя P. Он применяет силу следующим образом:
Если текущая SuperFighter (вызывающий объект) находится слишком близко, чтобы умереть (здоровье &ЛТ; 20),
затем он становится дружелюбным и исцеляет P (используя ApplyPowers класса SuperHero).
Если у нынешнего Суперфайтера есть здоровье >= 20, то он становится злым и сражается
P путем уменьшения здоровья P на огневую мощь текущего супер-истребителя.
Помните: здоровье может быть отрицательным, но не более 100
та часть,когда здоровье меньше 20, работает хорошо, но когда я делаю здоровье больше 20, это уменьшает здоровье суперфайтера, а не супергероя.
Что я уже пробовал:
//Заголовочный файл супергероя:
#pragma once #include <iostream> #include <string> using namespace std; class SuperHero { protected: float Health; public: SuperHero(float); virtual void ApplyPower(SuperHero*); void print(); };
//.cpp файл супер героя
#include <string> #include "2.h" using namespace std; SuperHero::SuperHero(float h) { Health = (h > 100) ? 100 : h; } void SuperHero::ApplyPower(SuperHero* p) { if (p->Health >= 95 && p->Health <= 100) { p->Health = 100; } else { { p->Health +=10; } } } void SuperHero::print() { cout << Health << ' '; }
//заголовочный файл superfighter:
#pragma once #include <string> #include "2.h" #include <iostream> using namespace std; class superfighter :protected SuperHero { private: float firepower; friend class SuperHero; public: superfighter(float, float); void ApplyPower(SuperHero*); void print(); };
//superfighter .cpp
#include <string> #include "2.h" #include <iostream> #include "3.h" using namespace std; superfighter::superfighter(float h, float f) :SuperHero(h){ firepower = f; } void superfighter::ApplyPower(SuperHero* p) { if (Health < 20) { p->ApplyPower(p); } else { SuperHero::Health -=firepower; } } void superfighter::print() { cout << Health << ' ' << firepower << endl; }
//основная функция
#include <string> #include "2.h" #include <iostream> #include "3.h" using namespace std; int main() { float a, b, c; cin >> a; cin >> b; cin >> c; SuperHero h1(a); superfighter f1(b, c); f1.ApplyPower(&h1); h1.print(); f1.print(); }