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

派生クラスのコンストラクター引数の後に:を使用する

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

通常、「::」演算子を使用して派生クラス コンストラクターで行う必要があります。

于 2012-11-12T15:12:55.943 に答える