본문 바로가기
Development Solutions/Qt & QML

[Solved][qml] An abstract class cannot be instantiated. (추상 클래스를 인스턴스화 할 수 없습니다)

by studio ODOC 2022. 9. 23.
반응형

[qml]

An abstract class cannot be instantiated.

추상 클래스를 인스턴스화 할 수 없습니다.

 

(추천) Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 강의 - 입문편

https://inf.run/3XmSH

 

Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 - 입문편 강의 - 인프런

Qt QML과 C++를 사용하여 크로스플랫폼 애플리케이션 개발에 입문할 수 있습니다. 해당 강의에서는 윈도우 응용 프로그램 타겟으로 개발을 진행합니다., 강의 주제 📖 이 강의를 통해 참가자들은

www.inflearn.com

 

 

배경 지식 (background)

추상 클래스 : 순수 가상 함수를 1개 이상 가지고 있는 클래스

순수 가상 함수 : 가상 함수 중에 구현부(중괄호 내부)를 정의하지 않은 "virtual 함수명() =0;" 형태의 함수

(Abstract class: A class with one or more pure virtual functions.

Pure virtual function: "virtual function name () = 0;" in which no implementation part (inside braces) is defined among virtual functions function of the form)

 

반응형
문제 상황 (problem situation)

이러한 추상 클래스를 Q_DECLARE_METATYPE 및 qregistermetatype 를 사용하여 MetaType 시스템에 등록할 경우, "추상 클래스를 인스턴스화 할 수 없습니다" 라는 에러 메시지가 표시된다.

(If these abstract classes are registered with the MetaType system using Q_DECLARE_METATYPE and qregistermetatype , the error message "Cannot instantiate abstract class" is displayed.)

 

 

해결 방법 (Resolution)

이 경우에는 순수 가상 함수를 해제해야한다.

"=0;"를 제거하고 중괄호 내부를 비운 형태의 가상 함수의 형태로 선언해야한다. ("virtual 함수명() {}" 형태)

(In this case, you need to free the pure virtual function.

Remove "=0;" and declare it in the form of a virtual function with the inside of the curly braces empty. (“virtual function name() {}” form))

 

(추천) Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 강의 - 입문편

https://inf.run/3XmSH

 

Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 - 입문편 강의 - 인프런

Qt QML과 C++를 사용하여 크로스플랫폼 애플리케이션 개발에 입문할 수 있습니다. 해당 강의에서는 윈도우 응용 프로그램 타겟으로 개발을 진행합니다., 강의 주제 📖 이 강의를 통해 참가자들은

www.inflearn.com

 

 

반응형