Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使函数返回具有不同属性的内容_C++_Class_Instances - Fatal编程技术网

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

C++ 使函数返回具有不同属性的内容,c++,class,instances,C++,Class,Instances,我会直截了当地说。老实说,我想这是有答案的,但我不知道该怎么说 int playerXCoord = Player.getPosition().x //this is just an example 你如何定义C++中的某些东西? 我熟悉类和实例,但我想知道如何做到这一点(在C/C++中)。类似的内容可能是: class Player { public: struct Coordinates { int x; int y; };

我会直截了当地说。老实说,我想这是有答案的,但我不知道该怎么说

int playerXCoord = Player.getPosition().x
//this is just an example
<>你如何定义C++中的某些东西?


我熟悉类和实例,但我想知道如何做到这一点(在C/C++中)。

类似的内容可能是:

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 { ... }


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

类似的内容可能是:

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 { ... }


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

如果要执行类似操作,请尝试使用setter和getter方法,例如:

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;
}

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

如果您想这样做,请尝试使用setter和getter方法,例如:

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;
}

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

您搜索了吗?在您的示例中,您正在访问由
Player.getPosition()
返回的对象的成员
x
-这是您想要的吗?@JonnyHenly是的,我没有找到任何内容。我相信我的搜索措辞是错误的。你试过“C++面向对象编程”吗?是的,就是这样@AndreasGraph是否搜索?在您的示例中,您正在访问由
Player.getPosition()
返回的对象的成员
x
-这是您想要的吗?@JonnyHenly是的,我没有找到任何内容。我相信我的搜索措辞是错误的。你试过“C++面向对象编程”吗?是的,就是这样@安德烈亚斯葡萄素