C2694 'Child::~Child(void) throw(Error)': 재정의 가상 함수에 지정된 예외가 기본 클래스 가상 멤버 함수 'Base::~Base(void)'보다 덜 제한적입니다.

비주얼 스튜디오 2008에서 2015로 마이그레이션 중 아래와 같은 에러가 있었습니다.

C2694 'Child::~Child(void) throw(Error)': 재정의 가상 함수에 지정된 예외가 기본 클래스 가상 멤버 함수 'Base::~Base(void)'보다 덜 제한적입니다.

관련 에러만 30개 정도 있었는데요, 아래와 같은 구성이었습니다.

class Base
{
      virtual ~Base();
}

class Child : public Base
{
      virtual ~Child() throw(Error);
}

자식에는 예외를 지정했는데 부모딴에서 예외 지정이 안 되어 있었습니다. 또는 그 반대 상황이어도 발생할 듯 하네요. 아무튼 아래와 같이 수정해주면 됩니다.

class Base
{
      virtual ~Base() throw(Error);
}

class Child : public Base
{
      virtual ~Child() throw(Error);
}

https://msdn.microsoft.com/ko-kr/library/e4x95xf8.aspx

이 블로그의 인기 게시물

Unity3D Prime31 처럼 자신만의 안드로이드 플러그인을 만들어보자

CMake Windows에 설치하기

Unity3D iOS Plugin 만들어 연동하기