아래와 같은 클래스와 주어진 유니온이 주어지면 유니온을 올바른 값으로 초기화하는 방법은 무엇입니까?클래스 이니셜 라이저에서 공용체를 설정하는 방법은 무엇입니까?
여기서 시도되는 것은 두 개 이상의 다른 유형을 클래스의 핵심 데이터 유형 중 하나로 사용하는 것입니다. void *를 사용하는 대신, 타입이 미리 알려지기 때문에 사용하려고하는 타입의 합집합이 생성됩니다. 문제는 클래스가 인스턴스화 될 때 올바른 공용 멤버를 초기화하는 방법입니다. 유형은 다형성이 아니기 때문에 일반적인 상속 모델이 적절하지 않은 것으로 보입니다. 올바른 노조원을 초기화하려는 순진한 시도는 아무데도 이르지 못했습니다.
union Union {
int n;
char *sz;
};
class Class {
public:
Class(int n): d(1.0), u(n) {}
Class(char *sz): d(2.0), u(sz) {}
....
double d;
Union u;
};
는 해결책을 수색 한 후, 대답은 분명되었고, 아마도 답변이 저장소에 대한 좋은 해결책이 될 수있다, 그래서 아래에 포함되어 있습니다.