1
파생 클래스 생성자 내부에서 기본 클래스의 멤버를 초기화하려고합니다.C++ 템플릿 및 파생 클래스 멤버 초기화
error: 'using BaseClass<T, 3>::values' is not a non-static data member of 'DerivedClass<T>'
DerivedClass(T a, T b, T c) : values{a, b, c} {}
^
왜이 허용되지 않습니다 :
template <typename T, int D>
class BaseClass {
// ...
protected:
T values[D];
};
template<typename T>
class DerivedClass : public BaseClass<T, 3> {
public:
using BaseClass<T, 3>::values;
DerivedClass(T a, T b, T c) : values{a, b, c} {}
};
그러나 나는이 얻을?
또한 생성자 본문에 값을 할당 할 수 있지만 초기화 목록을 더 이상 사용할 수 없습니다.
기본 클래스 멤버를 초기화하는 데 기본 클래스 생성자를 사용해야한다는 사실 외에도? 필요한 경우'std :: forward'를 사용하십시오. –