[Unreal4] Nested containers are not supported. 오류 해결하기.
728x90
최신의 C++은 2차원 배열을 동적할당하여 사용하기 보다는 2개의 컨테이너를 사용해 2차원을 표한하기를 원한다.
예를들어 int ** Array 를 사용하는 것이 아닌 Vector<Vecotr<int>> Array를 사용하는 것이다.
그렇게 언리얼 코드를 짜다보면 Nested containers are not supported. 에러를 만나게 된다.
이는 C++은 중첩된 컨테이너를 지원하지만 블루프린트는 지원하지 않기 때문이다.
실제로 공식 블루프린트 문서에 2차원 배열을 사용하는 것을 눈을 씻고 찾아봐도 없다.
이는 블루프린트 뿐 아니라 C++ 코드를 리플렉트할 때에도 마찬가지 에러가 발생한다.
UPROPERTY(VisibleAnywhere, Category = "Board")
TArray<TArray<ATile*>> TileMap; // 에러 발생 코드
/* 단순히 값이 잘 들어가 있나 보려고만 해도 에러가 발생한다. */
따라서 중첩 컨테이너를 블루프린트에서 사용할 수 있는 공식적인 방법은 없다.
중첩 컨테이너를 사용하지 않은 채로 2차원을 구현하려면 귀찮고 생각할 게 많고 size단위로 잘 움직여야하기 때문에 불편함이 있다.
따라서 이를 해결하기 위한 방법으로 컨테이너 하나를 구조체로 감싸는 방법을 사용한다.
USTRUCT(BlueprintType)
struct FINDMINE_API FTileMapRow
{
GENERATED_USTRUCT_BODY()
public:
TArray<ATile*> Row;
};
...
UPROPERTY(VisibleAnywhere, Category = "Board")
TArray<FTileMapRow> TileMap; // 에러 해결
...
728x90