GNT sans publicité, site mobile, fonctionnalitées exclusives...

Visual c++ et STL roguewave =>pair.h(63) : error C2079: 'first' uses undefined class

Le
akira
J'ai un problème de compilation avec Visual c++ et les STL roguewave.
Le code en bas me donne l'erreur suivante :
f:\xxxxx\productwcb1.2.0m\includew\_pair.h(63) : error C2079:
'first' uses undefined class 'Tempo'.

En compilant avec les STL microsoft, ça compile. Mais, je dois
utiliser les STL roguewave.

class Tempo
{

std::vector<std::pair<Tempo,bool>> _data; => c'est la
déclaration de Tempo qui pose 1 pb!!!

.
.
Lire la réponse

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
kanze
Le #282141
akira wrote:
J'ai un problème de compilation avec Visual c++ et les STL roguewave.
Le code en bas me donne l'erreur suivante :
f:xxxxxproductrwrcb1.2.0rmincluderw_pair.h(63) : error C2079:
'first' uses undefined class 'Tempo'.

En compilant avec les STL microsoft, ça compile. Mais, je dois
utiliser les STL roguewave.

class Tempo
{
...
std::vector<std::pair<Tempo,bool>> _data; ====> c'est la
déclaration de Tempo qui pose 1 pb!!!


C'est interdit par la norme : comportement indéfini, voir
§17.4.3.6/2 « In particular, the effects are undefined in the
following cases: [...] -- if an incomplete type is used as a
template argument when instantiating a template component. »

(En passant, je ne comprends pas l'exigence d'utiliser Roguewave
avec VC++. La bibliothèque qui est livrée avec VC++ est une des
meilleurs en termes de qualité -- celle de Roguewave est
probablement la pire. Si le but est d'avoir la même
implémentation sur toutes les plateformes, le STLport est mieux
que Roguewave, et gratuit, et Dinkumware ne coûte probablement
pas plus de Roguewave, et c'est probablement la meilleur.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Publicité
Suivre les réponses
Poster une réponse
Anonyme