Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;使用多态性修复未使用的参数警告_C++_Polymorphism_Unused Variables - Fatal编程技术网

C++ C++;使用多态性修复未使用的参数警告

C++ C++;使用多态性修复未使用的参数警告,c++,polymorphism,unused-variables,C++,Polymorphism,Unused Variables,我得到了一些关于未使用变量的编译器警告,我想知道什么是解决这个问题的合适方法 我有一个由基类继承的函数,在父类函数的实现中,我没有使用子类所需的所有参数;当然,这会导致警告,由于我不是一个经验丰富的程序员,我不确定修复这些警告的最佳方法是什么 因此,最简单的例子是: 在标题中: class car{ public: virtual void init(int color, int size) private: int size; }

我得到了一些关于未使用变量的编译器警告,我想知道什么是解决这个问题的合适方法

我有一个由基类继承的函数,在父类函数的实现中,我没有使用子类所需的所有参数;当然,这会导致警告,由于我不是一个经验丰富的程序员,我不确定修复这些警告的最佳方法是什么

因此,最简单的例子是:

在标题中:

    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;
    }

您只需在实现中不命名它们:

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

无需命名函数参数:如果不使用参数,只需关闭其名称:

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

可以省略函数参数的名称

void car::init(int, int size) {
  this->size = size;
}
这有时是不可取的,因为有些工具使用签名来提取文档,而您可以内联定义函数。然后你可以使用石膏

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

<> P>同时,请记住C++类通常不需要init函数,因为构造函数是这样做的。

< <代码> >颜色=颜色< /COD>…@ @只要参数和成员的名称完全相同,这就行不通了!我们有这样一个宏在工作:
#define TOUCH(v)(v=v)
。@g-makulik谢谢你的提醒。@BitFiddlingCodeMonkey这真的不会发出任何代码吗?操作员=的副作用如何?不可分配类型会发生什么情况?我经常看到的是
(void)颜色
#定义TOUCH(x)而(0){(void)x;}
。它不发出任何代码,适用于每种类型,并在许多代码库中使用。