Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;模板和派生类成员初始化_C++_Templates_Inheritance - Fatal编程技术网

C++ C++;模板和派生类成员初始化

C++ C++;模板和派生类成员初始化,c++,templates,inheritance,C++,Templates,Inheritance,我试图初始化派生类构造函数中基类的成员 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; D

我试图初始化派生类构造函数中基类的成员

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} {}
};
模板
类基类{
// ...
受保护的:
T值[D];
};
模板
类派生类:公共基类{
公众:
使用基类::值;
DerivedClass(TA,TB,TC):值{a,b,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} {}
                                ^
错误:“using BaseClass::values”不是“DerivedClass”的非静态数据成员
DerivedClass(TA,TB,TC):值{a,b,c}{
^
为什么不允许这样做


此外,我可以在构造函数体中赋值,但我将无法再使用初始化列表。

您不能直接初始化派生类构造函数中的基类成员<代码>使用您尝试使用从受保护访问更改为公共访问,但未更改此一般规则。创建适当的基类构造函数,并在派生类中将初始化器传递给它。

除了应该使用基类构造函数初始化基类成员之外?如果需要,请使用
std::forward