2009-02-18 6 views
3

que je voulais fairetypedef std conteneurs?

typedef deque type; //error, use of class template requires template argument list 
type<int> container_; 

Mais cette erreur me empêche. Comment puis-je faire cela?

Répondre

15

Vous ne pouvez pas (jusqu'à C++ 0x). Mais il pourrait faire des émules avec:

template<typename T> 
struct ContainerOf 
{ 
    typedef std::deque<T> type; 
}; 

utilisé comme:

ContainerOf<int>::type container_; 
2

Vous n'avez pas, C++ ne supporte pas encore ce type de typedef. Vous pouvez bien sûr dire;

typedef std::deque <int> IntDeque; 
8

Deque n'est pas un type. C'est un template, utilisé pour générer un type quand on lui donne un argument.

deque<int> 

est un type, vous pouvez donc faire

typedef deque<int> container_ 
1

Vous avez touché une erreur parce que vous avez manqué de spécifier int dans deque.

Mais notez que: Template typedef sont une fonctionnalité acceptée C++ 0x. Essayez avec la dernière g ++

0

La façon dont vous pouvez faire est:

#define type deque 

Mais qui vient avec plusieurs inconvénients.

+2

oui, il tournerait des choses comme « typename » dans « dequename » (je reconnais que « type » est un exemple, mais encore c'est un gros problème). Je dirais éviter cela à tout prix. –