다음 코드를 고려하십시오.
struct A
{
// No data members
//...
};
template<typename T, size_t N>
struct B : A
{
T data[N];
}
이것이 당신이 B를 초기화하는 방법입니다 : B<int, 3> b = { {}, {1, 2, 3} };
기본 클래스에 불필요한 빈 {}을 피하고 싶습니다. 이 Jarod42에 의해 제안 된 솔루션입니다 여기에 , 그러나, 그것은 요소의 기본 초기화 작동하지 않습니다는 : B<int, 3> b = {1, 2, 3};
잘하지만 B<int, 3> b = {1};
되지 않습니다 : b.data[1]
및 b.data[2]
0으로 초기화 기본적으로되지 않으며, 컴파일러 오류가 발생합니다. 기본 클래스를 생성에서 "숨길"수있는 방법이 있습니까 (또는 c ++ 20에있을 것입니까)?
왜 댓글입니까? 작동하는 것 같습니다, lol
—
user7769147
이것은 당신이 그것을 사용하지 않을 이유가 있다고 생각한 명백한 해결책입니다. :)
—
EVG
너무 쉬운 xD였습니다. 답변으로
—
쓰면
template<class... Ts> B(Ts... args) : data{args...} {}
않습니까?