gpt4 book ai didi

c++ - 具有继承和虚拟基类的赋值运算符

转载 作者:行者123 更新时间:2023-11-30 03:11:45 26 4
gpt4 key购买 nike

我有一个抽象的虚拟基类 Foo,我从中派生出许多其他类,这些类在细微方面有所不同。我有一个创建派生类并返回 Foo* 的工厂。我的一个更大的问题是我的运算符重载,我需要确保 DFoo 不会被 DFoo1(未显示)操作。我目前通过检查转换是否失败来处理这个问题,但我对这种方法非常不满意。我必须使用基类实现,因为我只能从工厂返回基类。如果这是最好的方法,那很好,我只是想确保这是有道理的,并且没有我遗漏的模式。非常感谢有关如何处理此类事情的任何建议。

 class Foo
{
public:
Foo(int x){...};
Bar m_bar;
virtual Foo& operator=(const Foo& f)
{
m_bar = f.m_bar
}
}

现在,我的派生类

class DFoo : public Foo
{
DFoo(int x, int y):Foo(int x) {...}
FooBar m_foobar;

Foo& operator=(const Foo& rhs)
{
if(this != &rhs)
{

Foo::operator=(rhs);
DFoo temp = static_cast<DFoo>(rhs);

if(temp != NULL)
{
m_foobar = static_cast<DFoo>(rhs).m_foobar;
}
else
throw exception(ex);
}
}
}

最佳答案

您可能正在寻找 boost::noncopyable .

关于c++ - 具有继承和虚拟基类的赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022870/

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