Funções virtuais e confronto de modelos
Eu tenho uma classe base abstrata para um pointAccumulator. Essa base abstrata será preenchida com métodos como uma função que retorna a média de todos os pontos. Um exemplo dessas duas classes é mostrado abaixo:
<code>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_; }; </code>
Como você pode ver no código eu também gostaria de usar a serialização de impulso para salvar esses tipos. Agora, usando um padrão de fábrica, acredito que você chame os tipos pointAccumulator assim:
<code>lala *a1 = new lalaLower(); </code>
Meu problema é que o método de serialização modelo não será acessível se eu chamar assim. Também não posso ter a classe de modelo na classe abstrata, pois isso não é permitido pelo c ++. Existe alguma forma de contornar isto?
Editar:
Eu considerei o método não-intrusivo para serialização, mas isso requer heights_ para ser público, o que não é ideal, nem é um bom estilo de programação. Eu pensei que um método potencialmente usando classes ou funções de amigos pudesse penetrar na classe com acesso às variáveis enquanto ainda mantinha a classe base abstrata? Alguém pode explicar como isso funcionaria?