use*_*342 0 c++ compiler-errors operator-overloading
我operator=在结构上重载EqualTestBase,并operator=采用与构造结构不同的参数.
struct EqualTestBase
{
EqualTestBase(int one) {}
EqualTestBase& operator=(std::string two)
{
//stuff
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
它在基类上工作正常.但是从它派生的trival结构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]
}
Run Code Online (Sandbox Code Playgroud)
我是否必须重新定义operator=所有派生结构,或者有没有办法自动传递该功能?
派生类具有隐式声明的复制赋值运算符,该运算符隐藏在基类中声明的运算符.您可以使用using它将其纳入范围:
struct EqualTestDerived : public EqualTestBase
{
EqualTestDerived(int one) : EqualTestBase(one) {}
using EqualTestBase::operator=;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |