2013-11-28 118 views
2

我得到了一些有关未使用变量的程序的编译器警告,我想知道什么是解决这个问题的合适方法。C++修复多态的未使用参数警告

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

所以,一个最小的例子是:

在标题:

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

'color = color' ... –

+1

@BitFiddlingCodeMonkey不!这不会工作,因为长参数和成员具有完全相同的名称! –

+0

我们有一个像这样工作的宏:'#define TOUCH(v)(v = v)'...... –

回答

3

所有你需要做的是不是在他们的名字执行:

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

有没有必要名函数的参数:如果不使用参数,只要把它的名字关:

void car::init(int, int size) { 
    this->size = size; 
} 
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函数,因为这是构造函数的用途。