Unreal 접근 한정자와 포인터

Taegang Yun·2023년 7월 26일
0

1. 접근 한정자

1) 접근 한정자의 종류

  • 변수나 함수의 접근 권한을 제어하는 기능. 접근 한정자 중에는 주로 쓰이는 3개가 존재한다.
    • public : 어떤 클래스에서도 접근 가능
    • protected : 해당 클래스 또는 해당 클래스를 상속받는 클래스에서만 접근 가능
    • private : 해당 클래스에서만 사용 가능하고 외부에서 접근 불가능
      • private 접근 한정자 사용 시 UPROPERTY에 BlueprintReadWriteBlueprintReadOnly 등을 사용하여 블루프린트에 노출시킬 수 없다.

2) 외부 클래스 접근

  • 소스 파일(.cpp) 에서 외부 클래스에 접근하기 위해서는 #include로 해당 클래스를 선언해야 한다.
  • 해당 클래스를 선언하고 나면 해당 클래스를 타입으로 하는 변수를 선언할 수 있고, 그 클래스의 멤버 변수에 접근할 수도 있다.

단, 클래스 변수를 단순하게 선언만 할 경우 초기화가 되지 않아서 컴파일 오류가 발생한다. 이를 정상적으로 처리하기 위해서는 생성자를 통해 초기 값을 지정해주거나, 생성된 클캐스 변수를 포인터를 통해 참조하는 방식으로 사용해야 한다.

  • 위를 이용해 월드에 배치되어 있는 오브젝트의 클래스를 포인터를 사용해 참조하여 사용가능하다.

    • 1) 헤더 파일에 참조하고자 하는 클래스의 포인터 변수를 선언한다.

      • 헤더 파일에서 클래스 변수를 만들 때는 자료형 앞에 class키워드를 붙인다. 이는 원래 클래스 변수를 만들기 위해서는 #include를 사용해 해당 클래스를 포함시켜야 하는데, 이를 생략하기 위해 class 키워드를 붙여 표시하는 것이다.(== 클래스 전방 선언)
    • 2) 월드에 배치되어 있는 오브젝트의 Details에서 클래스 변수가 가리킬 클래스 오브젝트를 선택할 수 있다.

    • 3) 포인터 변수가 가리키는 클래스의 멤버 변수들을 참조할 수 있다. ( 즉, 주소 == 오브젝트 , 주소에 저장된 값 == 클래스 라고 생각하는 것이 편하다)

    멤버 변수를 가리키는 방법은 일반 클래스 변수인지, 포인터 변수인지에 따라 나뉜다.

    • 일반 변수 : 변수이름.멤버변수이름
    ATestActor testActor;
    testActor.num1 = 0;
    • 포인터 변수 : 변수이름->멤버변수이름 (포인터 변수가 가리키는 클래스의 멤버 변수)
    //헤더 파일
    class ATestActor* testPointer;
    
    //소스 파일
    testPointer->num1 = 0;
    
profile
언젠간 전문가가 되겠지

0개의 댓글

관련 채용 정보