코드에는 몇 가지 특수 클래스가 있으며 일반 클래스가 있습니다. 나는 특별한 수업이 다른 치료를 받아야하기 때문에 그들을 차별화시키고 싶다.여분의 상속은 개체 구조 또는 인스턴스화에 어떤 차이가 있습니까?
struct _special {}; // empty class
class A : public _special { // A becomes special
...
};
class B { // 'B' remains normal
...
};
class D : public A { // 'D' becomes special due to 'A'
...
};
때마다를 모든 이러한 특수 클래스는 (다른 클래스의없는 아이)
빈 struct
으로 그들에게 상속를 삽입하여 내가 소스 코드에서 특별한 class
ES를 토큰 화하고 있음을 달성하기 기지 필요하다면, 나는 is_base_of<Base,Derived>
을 사용하여 분리 된 특수 및 정규 수업을 찾을 수 있습니다. 대체 방법은 특별한 클래스 내부 typedef
를 사용했을 것이다 :
class A {
public: typedef something _special;
};
문제는 A
의 아이가 여러 클래스에서 상속하는 경우 다음 typedef
의 모호한있을 것입니다.
질문 : 빈 class _special
와 상속처럼 같은 인터페이스를 추가로 의지가 그것을 는 어떤 방법으로 현재 코드를 상처 (예를 들어, 객체 구조, 컴파일 오류 등)? 당신이 이 또는 객체 구조 (관리가 정교?), 상처를하지만 전혀 컴파일러 오류, 인스턴스/생성자가 없을 것으로 무엇을 의미하는지
좋은 답변이지만 C++ 11을 사용하고 있지 않습니다. – iammilind
@ iammilind : 여전히 형식 특성을 사용할 수 있습니다. –
@ iammilind : C++ 03 솔루션도 포함되었습니다. –