3

私は何か問題を抱えています。それがポインターの私の理解なのか、それとも Unreal 自体なのかわかりません。これが私のコードです

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: 'initializing' : cannot convert from 'Anode *' to 'Anode' が発生しました。私はそれから試しました

Anode *node = *ActorItr;
nodes.Add(*node); 

コンパイルしましたが、未処理のメモリなどで実行時エラーが発生しました。これは、問題を処理せずに TArray へのポインターを渡すだけだからだと思います (そうですか?)。私が感じている概念は理解していますが、構文は理解していません。

4

1 に答える 1

3

アクター イテレーターはアクターではないため、直接代入は意味がありません。イテレータ ( Anode* node = *ActorItr;) を逆参照してみてください。その演算子をオーバーロードして、反復の現在の要素、つまり使用するノードを返す必要があります。

于 2014-04-29T17:33:56.530 に答える