C++ 前缀和后缀运算符继承

C++ 前缀和后缀运算符继承,c++,inheritance,operator-overloading,postfix-operator,prefix-operator,C++,Inheritance,Operator Overloading,Postfix Operator,Prefix Operator,考虑以下代码: // Only prefix operators struct prefix { prefix& operator--() { return *this; } prefix& operator++() { return *this; } }; // Try to represent prefix & postfix operators via inheritance struct any : prefix { any operat

考虑以下代码:

// Only prefix operators
struct prefix
{
    prefix& operator--() { return *this; }
    prefix& operator++() { return *this; }
};

// Try to represent prefix & postfix operators via inheritance
struct any : prefix
{
    any operator--(int) { return any(); }
    any operator++(int) { return any(); }
};

int main() {

    any a;

    a--;
    a++;
    --a; // no match for ‘operator--’ (operand type is ‘any’)
    ++a; // no match for ‘operator++’ (operand type is ‘any’)

    return 0;
}
我试图创建一个类的层次结构。基类,仅实现前缀递增/递减运算符。并在派生类中添加后缀版本

但是,编译器找不到派生类对象的前缀操作


为什么会发生这种情况,为什么前缀运算符不会被继承?

使用以下命令导入
前缀类的隐藏
运算符--
运算符+

struct any : prefix
{
    using prefix::operator--;
    using prefix::operator++;
    any operator--(int) { return any(); }
    any operator++(int) { return any(); }
};


这可能是一个糟糕的想法,但至少可以编译。

使用以下方法导入
前缀类的隐藏
运算符--
运算符+

struct any : prefix
{
    using prefix::operator--;
    using prefix::operator++;
    any operator--(int) { return any(); }
    any operator++(int) { return any(); }
};


这可能是一个糟糕的想法,但至少它会编译。

它们被派生类中的运算符隐藏。只需将所有运算符放在同一个类中,为什么要使其更复杂?@NeilKirk只是为了学习。它们被派生类中的运算符隐藏。只需将所有运算符放在同一个类中,为什么要把它弄得更复杂?@NeilKirk只是为了学习。不知何故,我认为前缀和后缀形式是不同的运算符。但同样的事情是,基类中的函数
f(int)
,派生类中的函数
f(double)
。非常感谢。不知何故,我认为前缀和后缀形式是不同的运算符。但同样的事情是,基类中的函数
f(int)
,派生类中的函数
f(double)
。谢谢。