C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]
Posted
技术标签:
【中文标题】C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]【英文标题】:C++:How to define a base class constructor inside the derived class,if the base constructor has initialization list with private members [duplicate] 【发布时间】:2016-02-16 16:42:38 【问题描述】:我在 c++ 库中有以下基类 A: 在 a.h 头文件中:
class A
private:
double param1_;
B* param2_; //Another library class
void function();
public:
A();
在对应的a.cpp源文件中存在以下实现:
A::A() :
param1_(1.0),
param2_(NULL)
function();
void A::function()
some code
我想创建一个继承类A的类B,并在派生类B的构造函数中隐式定义类A的构造函数。我对A类构造函数的实现中的初始化列表有点困惑。我写道:
在 b.h:
class B:: public A
public B();
我应该如何在b.cpp文件中定义基类构造函数??
另外我应该如何在派生类构造函数中隐式定义基类构造函数,因为在构造函数内部调用了基类私有函数?
【问题讨论】:
public B();
语法无效。
【参考方案1】:
B.h
:
class B: public A
public:
B();
B.cpp
:
B::B() : A(parameters)
【讨论】:
不起作用,产生如下错误:A::A() A();候选人期望 0 个参数,提供 2 个 @juls 好吧,如果A
的构造函数不带任何参数,则不要传入任何参数。以上是关于C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章