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;}
。它不发出任何代码,适用于每种类型,并在许多代码库中使用。