Witam. Męczę się od paru godzin i nie mogę wpaść na rozwiązanie. Nie chcę tutaj zasypywać Was całym kodem, więc pokrótce powiem o co mi chodzi. Mianowicie poniższa klasa korzysta z funkcji innych klas. Generalnie utworzyłem obiekty i nie wiem jak mógłbym je zastąpić lub po prostu zrobić to tak, by kompilator mi nie wyrzucał błędów o wielekrotnym obiekcie lub, że jest niezidyfikowany. Z tego co pamiętam był to błąd C2061. Nie pokażę teraz dokładnych logów, bo próbuję to zrobić w inny sposób. Myślałem o podawaniu obiektów w referencjach, ale wtedy byłoby ich zbyt dużo. Ktoś mi może podsunąć jakieś rozwiązanie? Jeśli będzie trzeba wszystkich kodów z 5 klas to wstawię.
Na tym kodzie akurat teraz wszystko ok, ale jak dalej idę tym działaniem i robię podobnie w innych funkcjach to już nie działa. Bo np. w hud potrzebuję "game" by wyświetlić dzień. Z kolei w game potrzebuję "hud" by wyświetlić main menu.
#include "HUD.h"
Game game;
Player player;
Resources resources;
};
//Huds
void HUD::ShowResources()
{
std::cout << " | Wood: " << resources.GetWood() << " | Stone: " << resources.GetStone() <<" | Sticks: " << resources.GetStick() <<"] \n\n";
}
void HUD::ShowStats(Player& player)
{
std::cout << "\n";
std::cout << " | Day: " << game.GetDay() <<"\n";
std::cout << " | Health: " << player.GetHp() << " | Energy: " << player.GetEnergy() << " |\n";
std::cout << " | Level: " << player.GetLevel() << " | Starvation: " << player.GetStarvation() << "% |\n\n";
}
void HUD::CraftMenu()
{
system("cls");
ShowStats(player);
ShowResources();
std::cout << " [--- CRAFTING MENU ---] \n\n"
<< " [0] Shelter [Wood: " << item[0].NeedWood << " Stone: "<< item[0].NeedStone <<" Sticks: " << item[0].NeedStick <<" \n"
<< " [1] Fire [Wood: " << item[1].NeedWood << " Stone: " << item[1].NeedStone << " Sticks: " << item[1].NeedStick << " \n"
<< " [3] Back to Main Menu\n\n";
std::cin >> choice;
switch (choice)
{
case 0:
CraftMenu();
break;
case 1:
CraftMenu();
break;
case 3:
MainMenu();
}
}
void HUD::MainMenu()
{
system("cls");
ShowStats(player);
std::cout << " [--- MAIN MENU ---] \n\n"
<< " [1] COLLECT\n"
<< " [2] CRAFT \n"
<< " [3] ...\n"
<< " [4] RESEARCH \n\n";
std::cin >> choice;
switch (choice)
{
case 1:
system("cls");
ShowStats(player);
resources.Collect();
MainMenu();
break;
case 2:
CraftMenu();
break;
case 3:
break;
case 4:
system("cls");
ShowStats(player);
player.Research();
MainMenu();
break;
default:
break;
}
}