, 나는 다음과 같은 문제가 : 나는 아주 간단한 상속 방식이C++ : CRTP 소멸자? 프로젝트에
를 (I 상속하지 구성 필요) :
수준의 자료를
-> 클래스 DerivedA
-> 클래스 DerivedB
은 -를
A, B 및 C는 바에서 클래스를 유도 DerivedC> 그게 다야. 그래서 지금은 2 개 선택이 있습니다 virtuality와
공공 상속을
일부 최적화 이유 (내가 인라인을 많이 필요로) 나는 virtuality을 원하지 않는 내용은 virtuality없이
개인 상속 ... 그리고 나는 개인적인 상속을 원하지 않는다. 나는 남아있는 유일한 옵션이 CRTP라고 생각한다. 하지만 기본 클래스는 300 가지 기능을 가지고 있으며 CRTP를 구현하면 정말 고통 스러울 것입니다.
그래서 나는 다음과 같은 솔루션이 유효한지 궁금 : 난 단지 기본 클래스의 소멸자에서 CRTP를 사용 TCRTP이 DerivedA, B 또는 C와 I는 공공 상속을 할 것
template<class TCRTP> class Base
{
~Base() {delete static_cast<TCRTP*>(this);}
}
. 완벽하게 괜찮습니까, 아니면 문제가 있습니까?
대단히 감사합니다.
필자는 필요없는 경우 일반 가상 상거래를 사용하지 않는 이유를 이해하지 못합니다. – Mat
그건 의미가 없기 시작합니다. 참조를 삭제할 수 없으며'delete this'를 유용한 방식으로 말하지 않을 수 있습니다. 실제 문제에 대해 작고 대표적인 예를 게시 할 수 있습니까? –
원래 코드에서 실수를했습니다. – Vincent