살아가는 이야기
GNU C++: Undefined reference to vtable ... 본문
GNU C++로 프로그래밍하다 보면 제목에 있는 것처럼 다음과 같은 오류 메시지가 발생하는 경우가 있다.
이것은 가상함수(virtual function)를 선언하고 실제로 정의하지 않은 경우에 발생한다. 만약 추상 클래스(abstract class)를 만들기 위해 가상함수를 사용하였다면 순수가상함수(pure virtual function)로 선언해 주어야 한다. 즉 클래스 정의 내에서 해당 멤버함수 선언의 맨 끝에 =0를 추가해 주면 된다. 예를 들어 클래스 Fruit에 순수가상함수 print를 선언하고 싶다면 다음과 같이 하면 된다.
Undefined reference to 'vtable for 클래스 이름'
이것은 가상함수(virtual function)를 선언하고 실제로 정의하지 않은 경우에 발생한다. 만약 추상 클래스(abstract class)를 만들기 위해 가상함수를 사용하였다면 순수가상함수(pure virtual function)로 선언해 주어야 한다. 즉 클래스 정의 내에서 해당 멤버함수 선언의 맨 끝에 =0를 추가해 주면 된다. 예를 들어 클래스 Fruit에 순수가상함수 print를 선언하고 싶다면 다음과 같이 하면 된다.
class Fruit {
public:
void print(ostream&) = 0;
};
Comments