使函数返回具有不同属性的内容

时间:2015-12-08 04:35:31

标签: c++ class instances

我会直言不讳。老实说,我认为有一个答案,但我不知道如何说出来。

int playerXCoord = Player.getPosition().x
//this is just an example

如何在C ++中定义内容?

我熟悉类和实例,但我想知道如何执行此操作(在C / C ++中)。

2 个答案:

答案 0 :(得分:3)

或许这样的事情:

class Player
{
public:
    struct Coordinates
    {
        int x;
        int y;
    };

    Coordinates const& getPosition() const
    {
        return position_;
    }

private:
    Coordinates position_;
};

现在你可以做到。

Player player;
int x = player.getPosition().x;

请注意,您不必返回引用,getPosition函数可以很容易地定义为

Coordinates getPosition() const { ... }

"技巧"是有一个返回正确结构的函数。该结构当然可以是一个具有自己的成员函数的完整类,这意味着您可以轻松地链接"许多成员函数调用,只要你返回某种对象。

答案 1 :(得分:1)

如果你想做类似的事情,尝试使用setter和getters方法,例如:

class Player
{
private:
    int m_X;
    int m_Y;

public:
    int getX() const;
    int getY() const;
    void setX(int x);
    void setY(int y);
}

Getters方法应该是:

int Player::getX()
{
   return m_X;
}

并且像:

void Player::setX(int x)
{
   m_X = x;
}

然后你可以用这种方式做点什么:

Player player;
player.setX(5);
player.setY(10);
int playerXcoord = player.getX();
...

你也可以用一种方法处理两种坐标:

void Player::setCoords(int x, int y)
{
   m_X = x;
   m_Y = y;
}

这种方法的优点是无法直接在类外部访问所有类组件。它可以防止意外修改。