原因:派生类无法直接访问基类的私有成员,而必须通过基类的方法进行访问,说直白点就是要使用基类的构造函数;例如:
错误写法:
first(int c, string ids = "first") {num = c; id = ids;};//错误写法
正确写法:
first(int c, string ids = "first"): temp(c, ids) {;};//正确写法
那为什么报的错是函数类型不匹配呢?
其实如果没有显示调用基类构造函数,程序将使用默认的基类构造函数,(该构造函数不含任何参数)即第一句代码与以下代码等效:
first(int c, string ids = "first"):temp() {num = c; id = ids;}
关键在于如果基类中根本没有不含任何参数的构造函数的话,就会出现类型不匹配的报错!!!