Posiadam klasę, w której zadeklarowałem strukturę, przechowującą współrzędne:
#include <iostream>
#include <vector>
using namespace std;
using std::vector;
using MAP_GRID = vector<vector<string>>;
void change_position(MAP_GRID &, int, int);
class vehicles{
private:
double durability;
double velocity;
//int move;
public:
vehicles(double d, double v) : durability(d), velocity(v) {}
~vehicles() {}
void drive();
virtual void info() { cout << durability << " " << velocity << "\n"; }
struct position{
vector<int> x;
vector<int> y;
};
friend class tanks;
friend class armored_car;
};
Są one wykorzystywane w poniższej funkcji:
void set_position(MAP_GRID &MAP, int x, int y, vehicles::position &pos, string object)
{
if (x <= MAP.size() || y <= MAP.size())
if (MAP[x][y] != "[ ]")
std::cout << "\nPosition is occupied" << std::endl;
else
{
MAP[x][y] = object;
pos.x.push_back(x);
pos.y.push_back(y);
}
else
std::cout << "\Choose correct position" << std::endl;
}
W funkcji main.cpp, stworzyłem sobie obiekt klasy, która dziedziczy z vehicles:
class tanks:public vehicles{
private:
double damage;
public:
tanks(double dmg, double v, double d, int m) :vehicles(d, v), damage(dmg), ammo(m) {}
int ammo;
void shoot();
void info();
};
Jak teraz użyć funkcji set_position, by przesłać do niej współrzędne stworzonego obiektu? Na razie mam takie wywołanie:
set_position(MAP, 5, 5, ?, "[x]");
Docelowo planuję stworzyć kilka klas-córek od vehicles.