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는 이런 상황을 잡아 주는 진단이에요.
본문
설명
분석기는 추상 클래스의 생성자(generative constructor)가 tear-off될 때 이 진단을 만들어요. 추상 클래스는 인스턴스를 만들 수 없기 때문에 이렇게 tear-off된 생성자를 쓸 만한 곳이 없어서, 허용되지 않는 동작이에요.
예시
다음 코드는 생성자 C.new가 tear-off되고 있고 클래스 C가 추상 클래스이기 때문에 이 진단을 만들어요.
abstract class C {
C();
}
void f() {
C.new;
}
흔한 해결 방법
구체적인(concrete) 클래스의 생성자를 tear-off해요.