언리얼 C++ 인터페이스
- 인터페이스
- 객체가 반드시 구현해야 할 행동을 지정
- 다형성 구현, 의존성 분리 설계
- 언리얼 설계 예시
- Actor: 월드에 배치되는 모든 오브젝트
- Pawn: 움직이는 오브젝트 -> Actor 상속
- INavAgentInterface를 구현하도록 설계가 되어있음
- 인터페이스를 생성하면 2개의 클래스가 생성
- UInterface
- 클래스 타입 정보 제공
- U타입 클래스에서 작업할 일 없음
- IInterface
- C++이기 때문에 추상으로 강제할 방법이 없어서 인터페이스에서도 구현이 가능함
- 모던 객체 지향이 추구하는 방향과는 다름
- 편의성
실습
- Student, Teacher, Staff가 Person 상속 받음
- Student, Teacher는 반드시 수업에 참여해야 함
- 파일 추가할 때
- 파일을 폴더에 추가
- 에디터에서 Refresh Visual Studio
- 헤더에서 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++에서는 인터페이스 구현이란 개념이 없기 때문에 모던 객체지향과 유사하게 구현하기 위해서는 다중 상속을 사용할 수 밖에 없음
- 내부적으로는 규칙을 준수해서 구현되어 있음