4

未使用の変数に関するプログラムのコンパイラ警告がいくつか表示されます。これを修正する適切な方法を知りたいです。

基本クラスによって継承される関数があり、親の関数の実装では、子に必要なすべてのパラメーターを使用しません。もちろん、これは警告につながります。私は経験豊富なプログラマーではないため、これらの警告を修正する最善の方法はわかりません。

したがって、最小限の例は次のようになります。

ヘッダー内:

    class car{
     public:
       virtual void init(int color, int size)
     private:
       int size;
    }
    class sportscar : public car{
     public:
       virtual void init(int color, int size)
     private:
       int color;
       int size;
    }

ソース ファイル内:

    void car::init(int color, int size){
      this->size = size;
    }
    void sportscar::init(int color, int size){
      this->color = color;
      this->size = size;
    }
4

3 に答える 3

9

あなたがする必要があるのは、実装でそれらに名前を付けないことだけです:

void car::init(int /* color */, int size){
    this->size = size;
}
于 2013-11-28T21:09:02.197 に答える
1

関数パラメーターの名前は省略できます。

void car::init(int, int size) {
  this->size = size;
}

一部のツールは署名を使用してドキュメントを抽出し、関数をインラインで定義するため、これは望ましくない場合があります。その後、キャストを使用できます。

struct car {
  void init(int color, int size) {
    (void)color; // prevent warning
    this->size = size;
  }
};

同時に、C++ クラスは多くの場合、init 関数を必要としないことを覚えておいてください。それがコンストラクターの目的だからです。

于 2013-11-28T21:12:23.667 に答える
0

関数のパラメーターに名前を付ける必要はありません。パラメーターを使用しない場合は、その名前をそのままにしておきます。

void car::init(int, int size) {
    this->size = size;
}
于 2013-11-28T21:09:25.713 に答える