• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

질문1. base.Init() 컴파일 에러가 발생합니다

23.01.23 17:17 작성 23.01.23 17:19 수정 조회수 452

0

메시지: CS0205 추상 기본 멤버를 호출할 수 없습니다
https://learn.microsoft.com/ko-kr/dotnet/csharp/misc/cs0205

원인 추정: 2023. 01. 05 이후 abstract 메서드 본문을 호출하는 시도를 문법적으로 중단

(abstract 는 메서드 껍데기만 동일하게 가져가는 것을 의도로 할 때만 사용 가능하게끔 하고, base 를 호출하며 사용할 때는 virtual 를 쓰도록 강제로 권장

 

안 좋은 대안: Start() 실행 순서 관리를 설정에서 직접 관리. '편집 -> 프로젝트 설정 -> 스크립트 실행 순서로 이동하여 스크립트의 실행 순서를 설정'

대체 시도: UI_Base 의 Init() 를 abstract 대신 virtual 로 변경

 

질문 요지: virtual 로 변경해도 문제가 없을까요?

답변 3

·

답변을 작성해보세요.

0

1596796님의 프로필

1596796

2023.08.24

가상메서드로 변경하면 오류가 해결되는 이유는

기본클래스에서 정의해놓은 가상메서드를

파생클래스에서 재정의 및 기능의 확장을하여

사용할 수 있기 때문에

Base.Init()으로 기본클래스에 접근이 가능합니다

맞나요?ㅎㅎ;;

0

1596796님의 프로필

1596796

2023.08.24

추상메서드 는 메서드의 선언만 해놓고

파생클래스에서 정의를 해주어야하는대

파생클래스에서 Base.Init()으로

구현되지않은 추상메서드에

접근하려해서 오류입니다.!

맞나요?ㅎㅎ;;

0

네 virtual로 변경해도 전혀 상관 없습니다!