Классы полезны, потому что они могут иметь методы и состояние / данные .Вообще говоря, если в вашем классе есть какие-либо данные, бессмысленно, что вы не создаете никаких объектов.Однако вы можете реализовать служебный класс, который состоит только из общедоступных статических функций.В таком случае вам не нужно создавать какой-либо объект.
Class CMyHelper
{
public:
static double calculateDistance(CPoint A, CPoint B);
static double calculateArea(double length, double width);
//...
private:
// You can even explictly say, I don't want make objects of this class.
// You'll get a compile-time error if someone tries.
CMyHelper();
CMyHelper(const CMyHelper&);
}
CPoint A(100, 200);
CPoint B(50, 100);
//Call static method without instantiation
CMyHelper::calculateDistance(A, B);
В вашем случае нет необходимости использовать статический класс и класс Friend, как мы видим.
Для меня занятия с друзьями - это последнее, к чему я прибегну.Согласно вашему описанию, вы можете сделать move()
публичным методом класса player
, так как именно игрок фактически «двигается» вместо map
.Кроме того, вам необходимо прояснить нам, что делает ваш map
класс.
Редактировать: Вы можете переместить координату игрока в класс игрока, если ваш класс карты достаточно умен, чтобы удалить.
Class CPlayer
{
public:
void move()
{
// moves up, down, left, or right
// update m_position
}
}
private:
CCoordinate m_position;
}