나는이 일을하고 싶습니다 : 나는 불완전한 형식을 반환 할 수 없기 때문에 물론C++의 기본 클래스 메서드에서 파생 클래스를 반환 할 수 있습니까?
class Derived;
class Base {
virtual Derived f() = 0;
};
class Derived : public Base {
};
이 작동하지 않습니다. 하지만 불완전한 타입을 상속받을 수 없기 때문에베이스 이전에 Derived를 정의 할 수도 없습니다. 나는 템플릿을 임시 해결책으로 사용할 수 있다고 추측한다. (Base에 대한 템플릿 인수로 파생 됨), 실제로 일을하는 것은보기 흉한 방법이다. 다른 방법이 있을까요?
정교화 : 나는 raytracer를 작성하고 있으며 각 Shape 클래스에는 경계 상자를 반환하는 함수가 있습니다. 그러나 BBox를 Shape의 하위 클래스로 만들었으므로이를 시각화 할 수 있습니다. 이 나쁜 디자인입니까?
그러나 당신은 그렇지 않습니다. 함수의 선언 시점에서 불완전한 형식을 반환하는 함수를 선언하는 것일뿐입니다. 괜찮을거야. 내 대답보기 (http://stackoverflow.com/questions/1412348/is-it-possible-to-return-a-derived-class-from-a-base-class-method-in-c/1412451#1412451) . – sbi