C에서 자율 self 멤버 유형 구현
PHP는 클래스 내에서 클래스 유형을 평가하는 self 키워드를 지원합니다. 그러나 C에는 이에 상응하는 기능이 없습니다.
클래스별로 이 동작을 시뮬레이션하려면 간단한 typedef를 사용할 수 있습니다.
struct Foo { typedef Foo self; };
이 방법이 작동하는 동안 클래스 이름을 명시적으로 지정해야 하며, 자동 오류의 위험이 있습니다.
자율적인 자체 회원 입력을 달성하기 위해 decltype 및 friends:
template <typename... Ts> class Self; template <typename X, typename... Ts> class Self<X, Ts...> : public Ts... { protected: typedef X self; }; #define WITH_SELF(X) X: public Self<X> #define WITH_SELF_DERIVED(X, ...) X: public Self<X, __VA_ARGS__>
이러한 매크로를 사용하면 셀프 멤버 입력을 쉽게 구현할 수 있습니다.
class WITH_SELF(Foo) { void test() { self foo; } };
파생 클래스의 경우 WITH_SELF_DERIVED를 사용합니다.
class WITH_SELF_DERIVED(Bar, Foo) { /* ... */ };
이것은 이 접근 방식을 사용하면 클래스 이름을 명시적으로 지정할 필요가 없을 뿐만 아니라 다중 상속도 지원됩니다.
위 내용은 C에서 자율적인 'self' 멤버 유형을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!