我遇到了一些问题,我不确定是我对指针的理解,还是虚幻本身。这是我的代码
TArray<Anode> nodes;
TActorIterator<Anode> ActorItr = TActorIterator< Anode >(GetWorld());
while (ActorItr) //Go through EVERY Node and check distance
{
if (this->GetUniqueID() != ActorItr->GetUniqueID())
{
//Check Distance
if (FVector::DistSquared(this->GetActorLocation(), ActorItr->GetActorLocation()) < 262144) //Check the distance between the two nodes.
{
Anode node = ActorItr;
//Anode* node = Cast<Anode>(*ActorItr);
nodes.Add(node); //Calls a error because
//cannot convert from 'TActorIterator<Anode>' to 'Anode'
}
}
}
}
所以我的问题是我无法将 Actor Iterator 转换为我的 TArray,并且我玩过取消引用等,我让它编译但在运行时崩溃。谢谢!
编辑:为清楚起见
我努力了
Anode node = *ActorItr;
但收到错误 C2440:“正在初始化”:无法从“Anode *”转换为“Anode”。然后我尝试了
Anode *node = *ActorItr;
nodes.Add(*node);
它编译但使用未处理的内存或其他东西创建了运行时错误,我认为这是因为它只是将指针交给 TArray 而没有处理问题(对吗?)。我理解我所感受到的概念,但不理解语法。