다음을 작성하는 데 "깨끗한"방법 (중복 코드가 없음)이 없습니까?"Enable_if"struct data menber
template < bool condition >
class Test {
struct Foo1 {
int a;
};
struct Foo2 {
int a;
int b;
};
using type = std::conditional_t<condition, Foo1, Foo2>;
};
내가 여기에서하고 싶은 것은 구조체의 단일 데이터 멤버를 활성화 또는 비활성화하는 것입니다. 그래서 하나의 구조체 만 필요하면 멋질 것입니다.
뭔가 같은 :
template < bool condition >
class Test {
struct type {
int a;
if constexpr(condition)
int b;
};
};
상속은 어떨까요? 'Foo2'를'Foo1'에서 상속 받습니까? 그것은 적어도 "중복 코드가 적다"는 것을 의미합니다. 이것은 또한 객체 지향 언어로 구조와 클래스를 확장하는 "자연스러운"방법입니다. –
@Someprogrammerdude 그렇습니다. 코드가 적을 것이지만 그것이 제가 원하는 바가 아닙니다. 나는 더 많은 문맥을 추가 할 필요가 있다고 생각한다. –
@MathieuVanNevel : 당신이 왜 * 왜 * 당신이 원하는지 설명하지 않았기 때문에 그것은 "더 많은 맥락"이 아닙니다. 어떻게 사용할 계획입니까? –