C 不能将父类型用作构造函数中的参数
c++ Cannot use parent type as parameter in constructor
试图将祖先类型作为构造函数g 中的参数时,似乎正在误以为是不存在的默认构造函数的类型。这里发生了什么,有修复吗?
最小示例:
class Outer
{
};
class Middle : Outer
{
public:
Middle(int i):i(i){}
protected:
int i;
};
class Inner : Middle
{
public:
Inner(int i, Outer *o):Middle(i){}
};
g 输出:
example.h:16:18: error: ‘class Outer Outer::Outer’ is inaccessible within this context
Inner(int i, Outer *o):Middle(i){}
^~~~~
example.h:2:1: note: declared here
{
^
您需要完全预选赛Outer
,否则它是无法访问的私人基础:
class Inner : Middle
{
public:
Inner(int i, ::Outer *o):Middle(i){}
};
否则使用protected
/public
继承链:
class Middle : public Outer
{
public:
Middle(int i):i(i){}
protected:
int i;
};
class Inner : public Middle
{
public:
Inner(int i, Outer *o):Middle(i){}
};
相关文章:
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在按值调用 (c++) 中转发构造函数参数
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 如何在构造函数参数中初始化"std::set"?
- 何时应在构造函数参数中使用 const C++?
- 使用模板化结构作为构造函数参数
- 使用 lambda 作为构造函数参数是否需要C++ 17?
- 如何使输入文本文件成为构造函数参数?c++
- shared_ptr构造函数参数是否应按值传递
- 是否允许使用初始值设定项列表将const数组引用实例化为构造函数参数
- 复制构造函数参数为0
- 用作成员构造函数参数的函数的求值顺序
- 结构中的默认成员值或默认构造函数参数
- C++将引用成员绑定到构造函数参数
- 如何通过可变参数模板将多个构造函数参数转发到数组初始值设定项列表?
- 模板函数指针参数与构造函数参数
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 如何基于构造函数参数模板化类成员函数的代码
- 将派生类构造函数参数传递给受保护的成员
- 如何根据构造函数参数使用超类类型初始化成员变量?