Bonjour à tous,

j'ai un petit problème de conception, et je ne sais pas trop comment le résoudre de façon élégante.

J'ai une classe mère (virtuelle) IResponse et plusieurs classes filles qui l'implémentent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
class IResponse
{
//...
};
 
class Response1 : public IResponse
{
// ...
};
Ensuiet, j'ai une classe mère (virtuelle) IRequest qui définit une fonction membre process().
J'ai plusieurs classe filles qui implémentent IRequest:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class IRequest
{
    //    [...]
    virtual int process() = 0;
};
 
class Request1 : public IRequest
{
    //    [...]
    int process();
}
Jusqu'ici, tout va bien.
Je voudrais maintenant que ma méthode process prenne un IResponse en paramètre, mais que ce paramètre soit spécialisé pour les spécialisations de IRequest::process.
En gros, je voudrais faire ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class IRequest
{
    //    [...]
    virtual int process(IResponse &response) = 0;
};
 
class Request1 : public IRequest
{
    //    [...]
    int process(Response1 &response);
}
Le problème, c'est que si je fais ça, j'ai cru comprendre que je ne fais que surcharger process, mais que je ne l'implémente pas.

Vous voyez ce que je cherche à faire? (c'est pas évident à expliquer)