C++ c++;noob问题,;党卫军!ss或ss.X

C++ c++;noob问题,;党卫军!ss或ss.X,c++,function,C++,Function,对不起,这是一个很难回答的问题。我是一个新的C++学生…… 我试图理解一个在线射击游戏中的C++代码。我想在我的项目中使用它。英雄向敌人射箭。它有这个&ss,ss.X和!但是我不知道他们是什么意思。这是什么意思。变量之间是什么意思?那么&ss是什么意思呢?请分享与此相关的主题或课程好吗?或者你知道这些叫做什么吗?我试图在谷歌上搜索它,但我不知道正确的关键字 这是怪物击中英雄的时候。这是我的怪物类中的一个函数 class monster { private: int x; int y; publi

对不起,这是一个很难回答的问题。我是一个新的C++学生…… 我试图理解一个在线射击游戏中的C++代码。我想在我的项目中使用它。英雄向敌人射箭。它有这个&ss,ss.X和!但是我不知道他们是什么意思。这是什么意思。变量之间是什么意思?那么&ss是什么意思呢?请分享与此相关的主题或课程好吗?或者你知道这些叫做什么吗?我试图在谷歌上搜索它,但我不知道正确的关键字

这是怪物击中英雄的时候。这是我的怪物类中的一个函数

class monster
{
private:
int x;
int y;
public:
int X()  { return x; } 
int Y()  { return y; }

void Collision(Hero &ss) 
   {
   if(((x >= ss.X()) && (x <= ss.X() + 5)) && ((y >= ss.Y()) && (y <= ss.Y() + 2)))
   { 
   ss.Damage(); //a function under my hero class which will decrease hero energy
   gotoxy(x,y); printf(" "); 
   x = rand()%74 + 3; 
   y = 4;
   }
}
类怪物
{
私人:
int x;
int-y;
公众:
int X(){return X;}
int Y(){return Y;}
无效碰撞(英雄与党卫军)
{

如果(((x>=ss.x())&&&(x=ss.Y())&&&(Y
Hero&ss
通过引用传递类
Hero
的对象(通过引用传递是要搜索的术语)。这意味着或多或少会将对象的地址传递到此函数中,并且由于它不是常量引用,您可以调用该类的所有方法(常量和非常量)

ss.X
实际上是
ss.X()
并且是
Hero
中方法
X()
的调用,该方法返回成员变量
X
的值


我在你的例子中没有看到任何代码> SS SS /C++ >,但这将调用一个运算符<代码>英雄>代码>返回布尔值,如果返回值是“代码> false (不为操作符),结果将是<代码>真值/代码> .

我想你需要开始C++基础教程。

和SS意味着你的类型英雄的对象被作为引用传递。理解你是C++初学者,你不知道什么是通过引用。所以让我们来看看一个例子:

如果将函数声明为void Collision(Hero ss){},然后在main()中使用它{}

这意味着在你的碰撞方法中ss参数将是你的MyHero对象的一个副本。所以你对ss所做的任何修改,MyHero都不会被修改

但是如果您声明无效碰撞(Hero&ss){}:


<>这意味着SS将是MyHug对象。这意味着对SS的任何修改都将修改MyHug对象。

任何基本的C++教程都将覆盖所有这些。所有这些都是操作符。查找C++的操作员列表……不应该在不知道C++的情况下发布问题。初学者读物。如果你真的希望通过阅读stackoverflow来理解这些符号,你会被欺骗的!我可以告诉你,第一个是对
s
的引用,第二个是
s
上的NOT操作符,第三个是访问
s
的成员。这教会你什么了吗?没有背景,它是你必须努力学习才能理解C++。编码是很难的,需要努力。选一本书开始阅读。非常感谢你的例子和解释。这是我在课堂上仍然困惑的部分。我刚开始C++,所以请原谅我的笨拙。所以这些(和SS)这些只是参数,不是特殊的关键字。非常感谢。我一定会读到“参考传递”。
void Collision(Hero ss) {}

int main() 
{
  Hero MyHero;
  Collision(MyHero);
}
void Collision(Hero &ss) {}

int main() 
{
  Hero MyHero;
  Collision(MyHero);
}