我有一个 pointAccumulator 的抽象基类。这个抽象基础将填充有诸如返回所有点平均值的函数之类的方法。这两个类的示例如下所示:
class lala {
public:
virtual someFunctions = 0;
virtual bool isEmpty() = 0;
};
class lalaLower : public lala {
public:
lalaLower(){}
~lalaLower(){}
someFunctions
template<class Archive> void serialize(Archive & ar, const unsigned int version) {
ar & heights_;
}
protected:
std::deque<double> heights_;
};
正如您在代码中看到的那样,我还想使用 boost 序列化来保存这些类型。现在使用工厂模式,我相信您可以像这样调用 pointAccumulator 类型:
lala *a1 = new lalaLower();
我的问题是,如果我以这种方式调用模板化的序列化方法,它将无法访问。我也不能在抽象类中使用模板类,因为 c++ 不允许这样做。有没有办法解决这个问题?
编辑:
我已经考虑过序列化的非侵入式方法,但这需要公开 heights_ ,这并不理想,也不是良好的编程风格。我认为潜在的使用友元类或函数的方法可以通过访问变量来穿透类,同时仍然保持基类抽象?谁能解释这将如何工作?