ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++/UE] Inappropriate '*' on variable of type 'FGameplayEventData', cannot have an exposed pointer to this type.
    UnrealEngine/자잘한 팁 2025. 11. 11. 14:43

     

     

    매크로로 설정된 Delegate 를 실행하려고 하니 이런 에러가 나왔다

    컴파일에서는 문제가 없었는데 막상 빌드를 실행하니 문제가 나타난걸로 봐서 링크나 언리얼 빌드 시에 문제가 있던 모양

     

    SPGameAbility_WeaponDefault.h(76): error : Inappropriate '*' on variable of type 'FGameplayEventData', cannot have an exposed pointer to this type.

     

     

    	UFUNCTION()
    	void HandleAttackStartEvent(FGameplayTag EventTag, const FGameplayEventData* Payload);

     

    알고보니 함수 선언할 때 `UFUNCTION` 으로 선언한 함수에 구조체 포인터 타입 매개변수를 넣은게 문제였다

     

    이 에러 메시지는 Unreal Engine의 UFUNCTION 시스템(특히 리플렉션, 블루프린트 노출 등)에서 FGameplayEventData*처럼 구조체에 대한 포인터 타입을 함수 인자로 사용할 수 없다는 의미입니다.

     

    • Unreal Engine의 UFUNCTION, UPROPERTY 등에서 구조체(Struct)는 값 타입이나 **const 참조(const FGameplayEventData&)*로만 노출할 수 있습니다.
    • 구조체 포인터(FGameplayEventData)는 리플렉션 시스템에서 지원하지 않기 때문에, UFUNCTION()이 붙은 함수의 인자로 사용할 경우 위와 같은 에러가 발생합니다.

     

    애초에 구조체 포인터를 자의적으로는 쓰지 않는게 좋겠지만 이번엔 매크로 함수에서 지정한 포맷이라 맞춰야 했으므로

    `UFUNCTION` 을 뺐더니 해결됐다~

     

     

     

     

     

    728x90
Designed by Tistory.