什么';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