tearoff_of_generative_constructor_of_abstract_class 진단: 추상 클래스 생성자는 tear-off 불가

tearoff_of_generative_constructor_of_abstract_class 진단: 추상 클래스 생성자는 tear-off 불가

생성자를 tear-off(떼어 내기)하면 생성자 자체를 값처럼 다룰 수 있어요. 그런데 추상 클래스의 생성자를 tear-off하면 아무 데도 쓸 수 없어요. tearoff_of_generative_constructor_of_abstract_class는 이런 상황을 잡아 주는 진단이에요.

출처: tearoff_of_generative_constructor_of_abstract_class

본문

설명

분석기는 추상 클래스의 생성자(generative constructor)가 tear-off될 때 이 진단을 만들어요. 추상 클래스는 인스턴스를 만들 수 없기 때문에 이렇게 tear-off된 생성자를 쓸 만한 곳이 없어서, 허용되지 않는 동작이에요.

예시

다음 코드는 생성자 C.new가 tear-off되고 있고 클래스 C가 추상 클래스이기 때문에 이 진단을 만들어요.

abstract class C {
  C();
}

void f() {
  C.new;
}

흔한 해결 방법

구체적인(concrete) 클래스의 생성자를 tear-off해요.

더 알아보기