【发布时间】:2019-08-27 07:03:55
【问题描述】:
在 Stroustrup 的 Programming: Principals and Practice using C++ 中,他有一个图形库 (FLTK) 的包装器,它具有以下基类定义:
class Shape {
protected:
Shape() { }
Shape(initializer_list<Point> lst);
//more irrelevant code below
}
还有一个派生类
struct Open_polyline : Shape {
public:
using Shape::Shape;
//more irrelevant code here
}
当我尝试像这样使用 Open_polyline 的所谓继承构造函数时:
Open_polyline opl{ {100,100}, {150,150},{200,200},{250,250} };
我收到编译器错误 C2248 说明
"Graph_lib::Open_polyline::Open_polyline': 无法访问在类 'Graph_lib::Open_polyline" 中声明的受保护成员
我在网上阅读了关于 'using' 关键字的信息,并认为通过保护 Open_polyline 的构造函数可能会导致问题,因此我将 Open_polyline 的定义编辑为:
struct Open_polyline : Shape {
public:
Open_polyline() {};
Open_polyline(initializer_list<Point> lst) : Shape(lst) {};
}
但我仍然收到相同的错误消息。如何使用受保护基类的构造函数?
【问题讨论】:
标签: c++ inheritance constructor protected