단일 클래스로 추상 클래스를 만들고 싶지만 일부 기본 구현이 필요합니다. 그래서 상속하는 모든 클래스는 기본 동작을 갖지만 기본 클래스의 인스턴스는 만들 수 없습니다. 하지만 foo를 순수 가상으로 표시하면 구현을 추가 할 수 없습니다.일부 구현 된 C++ 추상 클래스
class Base
{
public:
virtual void foo() =0; //Now I can't add foo implementation
};
내 솔루션은 순수 가상으로 만들지 않아서 생성자를 숨기는 것입니다. 클래스를 순수하게 표시 할 수 있는지 궁금하지만 여전히 구현이 있습니까?
정확하게 "내 솔루션은 순수 가상으로 만들지 않고 생성자를 숨기는 것"이었습니다. 그게 아주 합리적으로 들리 네요. –
순수 가상 함수 구현을 제공해도 아무런 문제가 없습니다. 하지만 제임스와 동의합니다. 원래의 아이디어가 가장 좋을 것입니다. –
아마도 개인 생성자를 사용하는 것이 좋습니다. 또는 C++ 11 컴파일러를 사용하는 경우 생성자를 [deleted] (http://en.wikipedia.org/wiki/C++11#Explicitly_defaulted_and_deleted_special_member_functions)로 표시 할 수 있습니다. –