基类构造函数错误

时间:2012-11-12 15:10:44

标签: c++ compiler-errors derived-class base-class

  

可能重复:
  What is this weird colon-member syntax in the constructor?

我有以下基类和派生类;

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

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

3 个答案:

答案 0 :(得分:1)

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

RNP::RNP( int id )
:
    P( id )
{
    //...
}

答案 1 :(得分:0)

通常你需要在派生类构造函数中使用" ::"操作

答案 2 :(得分:0)

在派生类'构造函数参数

之后使用
RNP::RNP(  int id): P (id)
{
//do your stuff
}