制作一个函数 return 具有不同属性的东西
Make a function return something with different properties
我开门见山。老实说,我觉得这个问题是有答案的,但我不知道怎么表达。
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;
请注意,您不必 return 引用,getPosition
函数可以很容易地定义为
Coordinates getPosition() const { ... }
"trick" 是具有 return 正确结构的函数。该结构当然可以是一个完整的 class 并具有自己的成员函数,这意味着您可以轻松地 "chain" 许多成员函数调用,只要您 return 是某种对象。
如果你想做类似的事情,请尝试使用 setters 和 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;
}
这种方法的优点是您的所有 class 组件都无法在 class 外部直接访问。它可以防止意外修改。
我开门见山。老实说,我觉得这个问题是有答案的,但我不知道怎么表达。
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;
请注意,您不必 return 引用,getPosition
函数可以很容易地定义为
Coordinates getPosition() const { ... }
"trick" 是具有 return 正确结构的函数。该结构当然可以是一个完整的 class 并具有自己的成员函数,这意味着您可以轻松地 "chain" 许多成员函数调用,只要您 return 是某种对象。
如果你想做类似的事情,请尝试使用 setters 和 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;
}
这种方法的优点是您的所有 class 组件都无法在 class 外部直接访问。它可以防止意外修改。