c++ - 为什么 operator = 不从模板类继承

标签 c++ templates inheritance

我有以下模板代码:

class ClassName{};

template <class T>
class TemplatePtr
{
public:
    void operator=(T* p)
    {

    }
};

class TemplatePtr_ClassName: public TemplateePtr<ClassName>
{
public:
    ~TempaltePtr_ClassName();
};


void Test()
{
    TemplatePtr_ClassName data;
    data = new ClassName;
}

但编译失败并显示错误消息(VS2008):

error C2679: binary '=' : no operator found which takes a right-hand operand of type >>'ClassName *' (or there is no acceptable conversion)

我在模板基类中定义了一个操作符,为什么它不起作用?

最佳答案

它得到继承。但是,编译器为 TempaltePtr_ClassName 生成的赋值运算符隐藏了继承的运算符。您可以通过添加使其可见

using TempaltePtr<ClassName>::operator=;

到您的派生类。

关于c++ - 为什么 operator = 不从模板类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122214/

相关文章:

ios - 两个类的 Swift 可选继承

c++ - 具有动态值的哈希表

c++ - 如何编写 `is_complete` 模板?

templates - 在不编辑默认模板的情况下在 Magento 后端添加自定义仪表板 "box"的正确方法是什么?

c++ - 非模板类使用模板类作为成员变量

JavaScript继承: member functions not inheriting?

c++ - 根据行的列值计算行的出现次数

c++ - Visual Studio 2015 - 只计算命中不停止

c++ - 如何为所有者绘制变量 CListBox (MFC) 设置高度

c++ - 来自子类的虚函数调用一次父函数