2012-01-10 3 views
4

단일 클래스로 추상 클래스를 만들고 싶지만 일부 기본 구현이 필요합니다. 그래서 상속하는 모든 클래스는 기본 동작을 갖지만 기본 클래스의 인스턴스는 만들 수 없습니다. 하지만 foo를 순수 가상으로 표시하면 구현을 추가 할 수 없습니다.일부 구현 된 C++ 추상 클래스

class Base 
{ 
public: 
    virtual void foo() =0; //Now I can't add foo implementation 
}; 

내 솔루션은 순수 가상으로 만들지 않아서 생성자를 숨기는 것입니다. 클래스를 순수하게 표시 할 수 있는지 궁금하지만 여전히 구현이 있습니까?

+4

정확하게 "내 솔루션은 순수 가상으로 만들지 않고 생성자를 숨기는 것"이었습니다. 그게 아주 합리적으로 들리 네요. –

+1

순수 가상 함수 구현을 제공해도 아무런 문제가 없습니다. 하지만 제임스와 동의합니다. 원래의 아이디어가 가장 좋을 것입니다. –

+0

아마도 개인 생성자를 사용하는 것이 좋습니다. 또는 C++ 11 컴파일러를 사용하는 경우 생성자를 [deleted] (http://en.wikipedia.org/wiki/C++11#Explicitly_defaulted_and_deleted_special_member_functions)로 표시 할 수 있습니다. –

답변

관련 문제