0
struct IA
{
virtual void Init() = 0;
.....
};
struct A : public IA
{
void Init() {};
.....
};
struct B : public A
{
int Init() { return 1; };
};
은 내가 오류 C2555있어 : 'B :: 초기화': 재정의 가상 함수 반환 유형 ...감추고 특정 기능은 디자인
내가 어떻게 든 초기화를 은폐 할 수()에서 A, 나는 다른 A의 기능을 은폐하고 싶지 않다. 클래스 A는 B 클래스뿐만 아니라 다른 클래스에서 A 클래스로 사용됩니다.
EDIT : 반환 유형의 차이 만있는 계층 구조에서 두 개의 Init 함수가 있어야합니다. A :: Init은 B 타입의 객체에서 호출 될 필요가 없습니다. 사실 내가
struct B : private A
{
using A::.... // all, except Init
int Init() { return 1; };
};
에 의해 그것을 할 수 있습니다하지만 기능의 큰 많은으로 인해 상속하는 :(
달성하려는 목표가 명확하지 않습니다. – Brian
아마도'Init' 함수가 가상 일 수 없습니다. – Brian
@Brian Bi, 당신은 대답으로 그것을 넣을 수 있습니다. 그러나 이제는 재미로 나를 위해 직감하고 있습니다. 그래서 다른 답변도 감사하겠습니다. – Yola