gpt4 book ai didi

c++ - 继承的运算符=不工作?

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:25 26 4
gpt4 key购买 nike

我正在重载 operator=在结构上 EqualTestBase , 和 operator=采用与用于构造结构的参数不同的参数。

struct EqualTestBase
{
EqualTestBase(int one) {}

EqualTestBase& operator=(std::string two)
{
//stuff

return *this;
}
};

它在基类上运行良好。但是从它派生的一个简单的结构,EqualTestDerived , 就像它没有 operator=成员函数。

struct EqualTestDerived : public EqualTestBase
{
EqualTestDerived(int one) : EqualTestBase(one) {}
};

void test()
{
EqualTestBase basetest(0);
basetest = "test"; //this is fine, compiles

EqualTestDerived derivedtest(0);
derivedtest = "test"; //this does not compile, says there is no constructor that takes type const char[5]
}

我必须重新定义 operator= 吗?在所有派生结构上,还是有一种方法可以自动传递该功能?

最佳答案

派生类有一个隐式声明的复制赋值运算符,它隐藏了基类中声明的那个。您可以使用 using 将其纳入范围:

struct EqualTestDerived : public EqualTestBase
{
EqualTestDerived(int one) : EqualTestBase(one) {}
using EqualTestBase::operator=;
};

关于c++ - 继承的运算符=不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com