1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
class AbstractData
{
public:
//Les méthodes virtuelles pures, comme:
bool write(const std::string& path) const = 0; // peut-être vaut-il mieux envoyer directement une ref sur le ofstream, du coup...
}
class A : public AbstractData
{
public:
int value;
char c;
bool write(const std::string& path) const
{
// le code qui va bien pour sortir les données
}
}
// ... même chose pour B et C ...
int main()
{
std::unique_ptr<AbstractData> pa (new A())
std::unique_ptr<AbstractData> pb (new B())
std::unique_ptr<AbstractData> pc (new C())
std::vector<unique_ptr<AbstractData> > v;
v.push_back(pa);
v.push_back(pb);
v.push_back(pc);
return 0;
} |
Partager