‫你好, 欢迎｡
‫在这节课中,
‫我们将学习如何访问指针另一端的内容, 这样我们的mover组件就可以从它所驻留的参与者那里获取属性, 比如获取参与者的名字或者位置｡
‫让我们深入了解一下, 看看我们如何做到这一点｡
‫所以能够得到一个指针或者一个参与者的地址是非常好的｡
‫但我们确实需要能够真正地与演员本身做一些事情｡
‫如果我们只看演员的话, 这个过程有点难以理解｡
‫我们将在tick组件中创建一些指向float的指针｡
‫我们从创建一个float开始, 我们把它命名为float, 并把它的值设为5.
‫然后我们创建一个浮点指针, 我把它命名为你的float,
‫我们把它设为我的float的地址.
‫所以它们都指向内存中的同一个地址｡
‫不同的是, 你的浮点数是一个地址, 所以我不能直接打印出值｡
‫所以如果我想做一个u log, 我想说你的浮点数值等于F的百分比, 然后我把你的浮点数｡
‫这是行不通的, 因为你的浮点数是一个指针, 而不是一个真正的浮点数｡
‫所以我们需要做的是｡
‫获取该位置的值｡
‫我们可以这样做, 如果我将它存储在一个新的浮点变量中, 称为float value,
‫然后我使用D引用操作符, 它实际上也是一个星星｡
‫我们把它放在我们要引用的东西之前｡
‫然后我们给予它一个指向D引用的指针, 在这里就是浮点数｡
‫有点奇怪的是, 我们在两种不同的情况下使用这些星星｡
‫第一, 我们在类型后面使用星星, 它告诉我们它是一个浮点指针｡
‫当你在类型中使用它的时候, 它意味着它是一个指针｡
‫当你在指针表达式前使用星星时, 你所做的就是, 给我这个位置的值｡
‫这样就得到了这个值, 然后把它复制到float value中, 现在是float value.
‫我们可以像这样打印出来｡
‫因此, 在所有这些扭曲的情况下, 让我们继续编译它, 看看它的运行情况｡
‫我们开始吧｡
‫当然, 它说你的浮点数值是5, 这是我们最初的值｡
‫通常我们不会把中间值存储在变量中, 因为那样会造成浪费.
‫它在复制我们不需要的东西｡
‫所以我们能做的就是直接在表达式中需要的地方使用它｡
‫所以你的float值应该是星星, 你的float是这样的, 这将以完全相同的方式工作,
‫除了这次它不会复制到一个不必要的变量中｡
‫现在假设我们想在这里得到所有者演员的名字｡
‫我们要做的是, 把浮点数的内容去掉, 我们要引用所有者指针.
‫所以我们做星星老板, 这实际上让我们到演员本身｡
‫然后我们可以用一对括号把所有者括起来, 然后我们可以做一个点｡
‫我们已经把actor从表达式中取出来了, 现在我们可以用一个点, 从actor里面取一些东西, 这样我们就可以得到actor, name或者label,
‫它会返回一个f字符串, 这样我们就可以得到f字符串, name, equals,
‫然后我们可以打印出mover, owner, percent, SW, 然后这里不用owner, 我们会用name开始,
‫或者把它取出来｡
‫我们需要把星星放在名字前面｡
‫这是星星操作员的另一个用途｡
‫我们已经遇到三个了｡
‫一个是用这根绳子｡
‫这是我们第一次看到它｡
‫这里是类型, 这里也是D, 引用了很多很多相同字符的用法.
‫但C++就是这样｡
‫让我们去试试吧, 然后按播放｡
‫现在你可以看到它打印出了移动器所连接的参与者的名字｡
‫我们已经使用D引用操作符访问了该指针, 并且能够在不同的对象上调用函数｡
‫实际上有一个更简洁的语法来实现这个,
‫因为我们经常想从一个指针对象中得到一个函数或者属性, 而不是必须用括号来做, 因为它们引用了运算符, 我们可以把它们合并成一个｡
‫我们可以把这些都去掉或者移动点, 然后用这个箭头操作符, 这样我们就得到了所有者箭头, 得到演员,
‫名字或者标签, 这做的事情完全一样, 只是写起来容易多了｡
‫所以一般来说, 最后的规则是, 如果我们有一个指针, 我们就用箭头操作符｡
‫如果我们使用的是一个结构体, 比如一个F字符串或者一个F向量, 我们就使用点操作符｡
‫所以我想让你们打印出演员的位置, 用我们新学到的指针的用法｡
‫所以我想让你打电话去找演员的位置｡
‫你将使用箭头操作符来查看指针并调用对象上的函数｡
‫在另一端, 你要存储由此产生的F向量｡
‫然后调用两个压缩字符串, 将结果存储在一个新的F字符串变量中, 并将其输出到日志中｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫我将创建一个新的F向量, 叫做所有者位置, 然后我将做所有者箭头, 得到参与者位置｡
‫然后把它转换成一个字符串｡
‫我有一个F字符串, 叫做所有者位置字符串, 它等于所有者位置点,
‫来压缩字符串, 就像这样.
‫现在我们有了自己的位置字符串｡
‫我们可以把它打印到日志上｡
‫我会说, mover的所有者是这个, location, percent, 我们会有另一个, 星星, 所有者,
‫location, 字符串, 就像这样, 然后点击控制键, alt, f11, 我们会继续,
‫点击播放, 他们会说, 我们得到了演员的名字, 以及它的位置, 作为一个字符串打印出来｡
‫所以现在我们可以看到指针的力量, 以及能够在指针上调用函数的力量｡
‫它允许我们在类的不同实例之间进行通信, 并使我们的对象更加有用｡
‫我们下节课再见｡