c++ - operator=(double) 隐藏在派生类中

标签 c++

为什么我的派生类隐藏了基类的operator=(double),而其他运算符却能正常工作?

struct base
{

double d;

    virtual double operator=(double v)
    {
        return d = v;
    }

    virtual double operator[](int index)
    {
        return d;
    }
};

struct derived : public base
{

};

void main()
{
    derived dv;
    dv = 20.0;  // generates error
    dv[0];      // Works
}

是否可以公开 operator= 而无需在派生类中重新定义它?

最佳答案

是的,你可以这样暴露它:

struct derived : public base
{
    using base::operator=;
};

调用失败,因为隐式生成的 operator=(const derived&) 隐藏了继承的 operator=(double)

关于c++ - operator=(double) 隐藏在派生类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26705220/

相关文章:

c++ - 在 Qt Widgets 中分离应用程序逻辑和 View

c++ - 小词汇量语音识别(约 20 个单词)

c++ - NRVO 不应该保证本地命名变量和调用站点变量采用相同的地址吗?

c++ - 是什么让这个桶排序函数变慢了?

C++ |此声明没有存储类或类型说明符 VS Code 1.34.0

c++ - cpp 松弛内存模型中发生的优化类型?

c++ - 编译器优化 : move variable from stack to register

c++ - 以 < n 复杂度删除 vector 中的元素

c++ - 加入编码视频帧

c++ - 什么数据结构更适合用于存储和排序<int, int>结构?