0

可能重复:
构造函数中这个奇怪的冒号成员语法是什么?

我有以下基类和派生类;

class P {
 int n;
 public:
  P( int id );
  virtual  int getn();
  virtual  int toss( int x ) = 0; 
};

class RNP : public P {
  int n;
 public:
    RNP(  int id);
    int toss( int x );
};

我已经为 RNP 创建了一个构造函数,但是当我编译时出现错误

player.cc:9:11: error: constructor for 'RNP' must explicitly initialize the base class 'P' which does not have a default constructor

我究竟如何在派生类中初始化基类?

4

3 回答 3

1

只需调用它的构造函数。它可以在初始化列表中完成,您可以在其中定义RNP::RNP

RNP::RNP( int id )
:
    P( id )
{
    //...
}
于 2012-11-12T15:13:04.790 回答
0

通常您需要在派生类构造函数中使用“::”运算符来执行此操作

于 2012-11-12T15:12:55.943 回答
0

使用:在派生类的构造函数参数之后

RNP::RNP(  int id): P (id)
{
//do your stuff
}
于 2012-11-12T15:14:26.377 回答