J'essaye d'écrire un adaptateur de récipient. Je veux également utiliser les définitions de type de la classe de base dans la classe dérivée. J'ai donc essayé ce qui suit ...typedef inconnu dans la classe dérivée
template <class CONTAINER> class SequenceComposite {
protected:
CONTAINER m_data;
public:
typedef typename CONTAINER::size_type size_type;
// ...
};
template <class DTYPE>
class VectorComposite : public virtual SequenceComposite< std::vector<DTYPE> > {
public:
size_type capacity() const { m_data.capacity(); }
// ...
};
Je suis arrivé cette erreur ...
error: ‘size_type’ does not name a type
note: (perhaps ‘typename SequenceComposite<std::vector<T> >::size_type’ was intended) // yes, it was
Comment puis-je dire au compilateur que je veux utiliser le typedef de la classe de base?
Hmm ... ce n'était pas prévu. Cela signifierait de redéfinir tous les types déjà définis. – Michael
@Michael Vous pouvez également utiliser 'using', j'ai ajouté cet exemple aussi. –
La solution proposée @ Michael par 'jrok' est encore mieux –