순수 가상함수(pure virtual function)을 선언만 하고 정의하지 않고 넘어가면 cannot instantiate abstract class 라는 에러 메시지를 발생하며 컴파일 되지 않는다. 작업하다보면 실수하고 넘어갈 수 있는 부분이기 때문에 해당 에러를 발견하면 즉시 순수 가상함수를 의심하자.  

 

 

cannot instantiate abstract class 문제

 


 

 

문제상황

 

아래와 같은 에러 메시지가 뜨며 컴파일 되지 않는다. 

 


 

 

이유 및 해결방안 

 

cannot instantiate abstract class

 

추상클래스를 인스턴스 생성할 수 없어 발생하는 에러다.

 

추상클래스는 순수 가상함수를 포함하는 클래스로 순수 가상함수는 자식 클래스에서 반드시 정의 해주어야 한다.

 

순수 가상함수를 자식 클래스에서 정의하면 문제는 해결된다.

 

 

 

 

나의 경우 인터페이스에서 순수 가상함수를 선언한 후 이를 상속받는 캐릭터 클래스에서 재정의를 해주지 않았다. 

선언해놓고 나중에 재정의해야지라고 생각하고 넘겼던게 원인이었다. 

 

캐릭터 클래스에서 순수 가상함수를 재정의하여 문제를 해결하였다.