什么';s在ActorIterator变量中,*ActorItor返回什么? 虚幻引擎C++编程 < P> for (TActorIterator ActorItr(GetWorld()); ActorItr; ++ActorItr) { // Same as with the Object Iterator, access the subclass instance with the * or -> operators. AStaticMeshActor *Mesh = *ActorItr; ClientMessage(ActorItr->GetName()); ClientMessage(ActorItr->GetActorLocation().ToString()); } AStaticMeshActor *Mesh = *ActorItr
在网格上方的代码中,有一个什么';s在ActorIterator变量中,*ActorItor返回什么? 虚幻引擎C++编程 < P> for (TActorIterator ActorItr(GetWorld()); ActorItr; ++ActorItr) { // Same as with the Object Iterator, access the subclass instance with the * or -> operators. AStaticMeshActor *Mesh = *ActorItr; ClientMessage(ActorItr->GetName()); ClientMessage(ActorItr->GetActorLocation().ToString()); } AStaticMeshActor *Mesh = *ActorItr,c++,iterator,C++,Iterator,在网格上方的代码中,有一个AStaticMeshActor类型的指针。因此,您必须接收一个内存地址。但我的疑问是为什么要使用*操作符?为什么不直接使用ActorItr或&(*ActorItr) *ActorItr是否返回指向的对象的地址或返回由ActorItr指向的对象?为什么非真实引擎会将对象本身分配给期望接收内存地址的变量 谢谢…actor显然是某种容器迭代器,并且GetWorld()返回一个包含AStaticMeshActor*指针的容器 *actoritor取消对迭代器的引用,以访问(引
AStaticMeshActor
类型的指针。因此,您必须接收一个内存地址。但我的疑问是为什么要使用*操作符?为什么不直接使用ActorItr
或&(*ActorItr)
*ActorItr
是否返回指向的对象的地址或返回由ActorItr
指向的对象?为什么非真实引擎会将对象本身分配给期望接收内存地址的变量
谢谢…
actor
显然是某种容器迭代器,并且GetWorld()
返回一个包含AStaticMeshActor*
指针的容器
*actoritor
取消对迭代器的引用,以访问(引用)实际的容器元素,在您的示例中,它恰好是一个AStaticMeshActor*
指针
不能将actoritor
本身指定给Mesh
,因为迭代器本身不是AStaticMeshActor*
指针,只有它引用的元素是
&(*ActorItr)
也会失败,因为这将取消对迭代器的引用以获取AStaticMeshActor*
指针,然后获取该指针的地址,从而生成AStaticMeshActor**
指针
actoritor->
同样也会取消对迭代器的引用以访问底层容器元素,因此您正在对指向的AStaticMeshActor
对象调用GetName()
和GetActorLocation()
所有的输入/输出迭代器都可以被
操作符*
去引用,输入迭代器也可以被操作符->
去引用。看起来TActorIterator
是一个类模板,而不是一个类型,因此,该代码是无效的,除非它类似于从TActorIterator
专门化派生的类的成员。所以这在很大程度上取决于你没有展示的背景。太好了!!解释得很好。。我有关于指针的理论和实践的知识,现在我已经巩固了这些知识。关于迭代器。。。谢谢
AStaticMeshActor *Mesh = ActorItr ----->Error
AStaticMeshActor *Mesh = &(*ActorItr) ------>Error