Как использовать одни и те же объекты класса и их методы в разных функциях?
Вот например, у меня есть класс Animal и есть его 3 объекта, я хочу из разных функций взаимодействовать с одними и теми же объектами и их методами, вопрос как это сделать?
Ниже показан код выбора одного из объектов класса Animal, и нужно сделать так чтобы в функции func я мог изменять данные и вызывать методы объектов класса Animal
#include <iostream>
#include <ctime>
#include <random>
#include <windows.h>
using namespace std;
class Animal
{
public:
string name;
int age;
// characteristics default
int speed = 0;
int strengh = 0;
int intelligence = 0;
int movement = 0;
int playable = 0;
// constructor
Animal(string name_ , int speed_, int strengh_, int intelligence_, int movement_, int playable_)
{
this->name = name_;
this->speed = speed_;
this->strengh = strengh_;
this->intelligence = intelligence_;
this->movement = movement_;
this->playable = playable_;
}
// characteristics LvL UP
void CharacteristicsLvLUp(int speed_, int strengh_, int intelligence_, int movement_, int playable_)
{
this->speed += speed_;
this->strengh += strengh_;
this->intelligence += intelligence_;
this->movement += movement_;
this->playable += playable_;
}
// characteristics print
void CharacteristicsPrint()
{
cout << "Скорость -> " << speed << endl <<
"Сила -> " << strengh << endl <<
"Интеллект -> " << intelligence << endl <<
"Подвижность -> " << movement << endl <<
"Игривость -> " << playable << endl;
}
};
int main()
{
setlocale(LC_ALL, "ru");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
string EnterName;
int ChosePet;
Animal Turtle(EnterName, 5, 7, 9, 6, 8);
Animal Cat(EnterName, 10, 5, 9, 10, 12);
Animal Dog(EnterName, 11, 7, 12, 10, 11);
cout << "Выберите питомца: " << endl <<
"1 -> Черепашка" << endl << "2 -> Кот" << endl << "3 -> Собака" << endl;
cin >> ChosePet;
switch (ChosePet)
{
case 1:
cout << "Вы выбрали черепашку!" << endl;
cout << "Дай имя новому питомцу" << endl;
cin >> EnterName;
cout << "Теперь вашего питомца теперь зовут " << EnterName << "!" << endl;
cout << endl;
cout << "Вот характеристики вашего " << EnterName << endl;
Turtle.CharacteristicsPrint();
break;
case 2:
cout << "Вы выбрали кота!" << endl;
cout << "Дай имя новому питомцу" << endl;
cin >> EnterName;
cout << "Теперь вашего питомца теперь зовут " << EnterName << "!" << endl;
cout << endl;
cout << "Вот характеристики вашего " << EnterName << endl;
Cat.CharacteristicsPrint();
break;
case 3:
cout << "Вы выбрали собаку!" << endl;
cout << "Дай имя новому питомцу" << endl;
cin >> EnterName;
cout << "Теперь вашего питомца зовут " << EnterName << "!" << endl;
cout << endl;
cout << "Вот характеристики вашего " << EnterName << endl;
Dog.CharacteristicsPrint();
break;
default:
cout << "Нет питомца под таким номером!" << endl;
break;
}
return 0;
}
void func()
{
// тут надо взаимодействовать с объектами класса <-----
}
Ответы (1 шт):
Автор решения: ManyBytes
→ Ссылка
Если я правильно Вас понял, Вам необходимо использовать ссылку на класс Animal:
void func1(Animal& animal)
{
cout << "Имя животного: " << animal.name << '\n';
cout << "Характеристики животного:\n"
animal.CharacteristicsPrint();
}
void func2(Animal& animal)
{
animal.name = "dog";
}
int main()
{
Animal cat(...);
func1(cat);
func2(cat);
}