【发布时间】:2013-12-15 00:00:23
【问题描述】:
我的程序收到一些关于未使用变量的编译器警告,我想知道什么是解决此问题的合适方法。
我有一个由基类继承的函数,并且在为父类实现该函数时,我没有使用子类所需的所有参数;当然这会导致警告,由于我不是经验丰富的程序员,我不确定修复这些警告的最佳方法是什么。
所以一个最小的例子是:
在标题中:
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;
}
【问题讨论】:
-
怎么样
color = color... -
@BitFiddlingCodeMonkey 不!如果长参数和成员具有完全相同的名称,那将不起作用!
-
我们有一个这样的宏在工作:
#define TOUCH(v) (v = v)... -
@g-makulik 感谢您的提醒。
-
@BitFiddlingCodeMonkey 这真的不会发出任何代码吗?
operator=的副作用如何?不可分配的类型会发生什么?我经常看到的是(void)color;或#define TOUCH(x) while(0) { (void)x; }。这不会发出任何代码,适用于每种类型,并在许多代码库中使用。
标签: c++ polymorphism unused-variables