[UE5] 이득우 Part 1. 7강 언리얼 C++Ⅰ - 인터페이스

공부 스파이럴·2023년 12월 8일
0

언리얼 C++ 인터페이스

  • 인터페이스
    • 객체가 반드시 구현해야 할 행동을 지정
    • 다형성 구현, 의존성 분리 설계
  • 언리얼 설계 예시
    • Actor: 월드에 배치되는 모든 오브젝트
    • Pawn: 움직이는 오브젝트 -> Actor 상속
      • INavAgentInterface를 구현하도록 설계가 되어있음

  • 인터페이스를 생성하면 2개의 클래스가 생성
    • UInterface
      • 클래스 타입 정보 제공
      • U타입 클래스에서 작업할 일 없음
    • IInterface
      • 실질적인 설계 및 구현
  • C++이기 때문에 추상으로 강제할 방법이 없어서 인터페이스에서도 구현이 가능함
    • 모던 객체 지향이 추구하는 방향과는 다름
    • 편의성

실습

  • Student, Teacher, Staff가 Person 상속 받음
  • Student, Teacher는 반드시 수업에 참여해야 함
    • 수업 행동 인터페이스 설계

  • 파일 추가할 때
    1. 파일을 폴더에 추가
    2. 에디터에서 Refresh Visual Studio
    3. 헤더에서 DLLEXPORT 키워드의 매크로 수정

  • 인터페이스 클래스를 생성하고 다중 상속

  • 클래스 정보에 대해서는 단일 상속만 지원하기 때문에 이후 상속한 인터페이스에 대해서 Super를 사용할 수 없음
    • 직접 입력해줘야 함
  • 해당 인터페이스의 상속에 대해서는 캐스팅을 통해서 확인이 가능
    • 언리얼은 안전한 형변환을 지원하기 때문에 형변환에 실패하면 nullptr을 반환

마무리

  • C++의 다중상속 보다는 언리얼 C++의 인터페이스를 사용해 가급적 축소된 다중상속의 형태로 구현하는 것이 향후 유지보수에 도움이 됨

언리얼 인터페이스 다중 상속 질문

https://www.inflearn.com/questions/954687/%EC%96%B8%EB%A6%AC%EC%96%BC-c-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-c-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4

  • C++에서는 인터페이스 구현이란 개념이 없기 때문에 모던 객체지향과 유사하게 구현하기 위해서는 다중 상속을 사용할 수 밖에 없음
  • 내부적으로는 규칙을 준수해서 구현되어 있음

0개의 댓글