ActorItr 迭代器变量中有什么,* ActorItr 返回什么?
What's inside the ActorItr iterator variable and what * ActorItr returns?
在虚幻引擎C++编程中
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
在上面的代码中,Mesh 是一个类型AStaticMeshActor
的指针。因此,您必须收到内存地址。但我的疑问是为什么要使用 *运算符?为什么不直接使用ActorItr
或& ( *ActorItr)
?
AStaticMeshActor *Mesh = ActorItr ----->Error
AStaticMeshActor *Mesh = &(*ActorItr) ------>Error
*ActorItr
返回指向对象的地址还是返回Actoritr
指向的对象?为什么虚幻引擎会将对象本身分配给期望接收内存地址的变量?
谢谢。。。
ActorItr
显然是某种容器迭代器,GetWorld()
返回一个包含AStaticMeshActor*
指针的容器。
*ActorItr
取消引用迭代器以访问(引用)实际的容器元素,该元素恰好是示例中的AStaticMeshActor*
指针。
你不能将ActorItr
本身分配给Mesh
,因为迭代器本身不是一个AStaticMeshActor*
指针,只有它引用的元素才是。
&(*ActorItr)
也会失败,因为这会取消引用迭代器以获取AStaticMeshActor*
指针,然后获取该指针的地址,从而生成AStaticMeshActor**
指针。
同样,ActorItr->
也会取消引用迭代器以访问基础容器元素,因此您将在指向的AStaticMeshActor
对象上调用GetName()
和GetActorLocation()
。
所有输入/输出迭代器都可以通过operator*
去引用,输入迭代器也可以通过operator->
去引用。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 我应该使用什么来代替void作为变体中的替代类型之一
- ActorItr 迭代器变量中有什么,* ActorItr 返回什么?