我有很多类都继承自Base
。
在某个时候,const
成员(不是静态成员)已添加到Base
类中。为了对其进行初始化,我向Base
和子级添加了构造函数。
但是(据我所知)此操作删除了默认赋值运算符。我需要这个操作员。 现在,我需要向自“ Base”继承的每个类添加自定义赋值运算符。 有很多课程。解决这种情况的最简单方法是什么?
UPD:简单示例
class SerializationBase : {
const SerializationType type;
...
public:
SerializationType GetType() {return type;}
}
class SomeObject : public SerializationBase {
... // a lot of different fields
public:
SomeObject() : SerializationBase(SerializationType::SomeType);
}
class SomeAnotherObject : public SerializationBase {
... // a lot of different fields
public:
SomeAnotherObject() : SerializationBase(SerializationType::SomeAnotherType);
}
添加const SerializationType
后无效的代码:
SomeObject some = Deserialize<SomeObject>(serializedData);
其中Deserialize
是:
template <typename T>
T Deserialize(SerializedData);
我想要的是:使它工作的最简单方法。 (也许是赋值运算符的某些类上下文无关的实现,我可以在每个类中复制粘贴)
答案 0 :(得分:4)
问题在于,要实现默认的赋值运算符,您需要处理const成员。
为您提供3种选择:
我会选择第一个选项,但是我不知道该const成员的详细信息。