c++中纯虚函数和子函数中未使用的参数

Pure virtual functions and unused arguments in child functions in C++

本文关键字:未使用 参数 子函数 函数 c++      更新时间:2023-10-16

我有以下内容:

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(…)没有父实现,因为它是一个纯虚函数。父类说foo有两个矢量参数。子节点用两个字符串参数正确地实现了它,但没有使用它们。然而,Parent的一些子类会使用这些参数,所以它们需要一直在那里。

是否有任何方法我可以使用重载允许foo在给定的子类没有参数,即使父母说它必须?

许多谢谢。

不要指定参数名:

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