5

我有以下内容:

class Parent {
public:
    virtual bool foo(vector<string> arg1, vector<string> arg2) = 0;
};

class Child : public Parent {
public:
    bool foo(vector<string> arg1, vector<string> arg2);
};

// arg1 and arg2 not used - GIVES WARNING
bool Child::foo(vector<string> arg1, vector<string> arg2) {
    return false;
}

foo(...) 没有 Parent 实现,因为它是一个纯虚函数。父母说 foo 有两个向量参数。孩子用两个字符串参数正确地实现了它,但它们没有被使用。但是,某些 Parent 的孩子会使用这些参数,所以他们需要一直在那里。

有什么方法可以使用重载来允许给定子类中的 foo 没有参数,即使父级说它必须?

非常感谢。

4

1 回答 1

18

不要指定参数名称:

// arg1 and arg2 not used - GIVES WARNING
bool Child::foo(vector<string>, vector<string>) {
    return false;
}

那应该可以解决警告。

如果您的编译器出于某种原因不支持它 - 请执行以下操作:

// arg1 and arg2 not used - GIVES WARNING
bool Child::foo(vector<string> arg1, vector<string> arg2) {
    (void)arg1; (void)arg2; // ignore parameters without "unused" warning
    return false;
}
于 2011-07-19T20:29:51.383 回答