Quand le compilateur dit des conneries
Bonjour, :D
J'ai modifié le type des variables pour résoudre le problème objet du précédent message
et j'arrive à me poser des question sur ce que dit le compilateur:
je vous donne les déclarations:
Code:
1 2 3 4 5
| std::list<enPOS>* pListPosVerb; //Pos List for verb chunk type
std::list<enPOS>* pListPosNoun; //Pos List for noun chunk type
std::list<enPOS>* pListPostStopper; //Pos List for poststopper chunk type
std::list<enPOS>* pListPreStopper; //Pos List for prestopper chunk type
std::list<enPOS>* pListPosFunct; //Pos List for function chunk type |
je déclare ainsi des pointeur sur des listes d'élément de type enPOS
J'ai donc codé:
Code:
1 2 3 4 5 6 7 8
| itStringPos = wsListPosVerb.begin();
while( itStringPos != wsListPosVerb.end())
{
std::wstring wsPOS = *itStringPos;
enPOS curpos = pPos->CPOS::GetPOSWithPOSLabel( wsPOS);
pListPosVerb->push_back( curpos);
itStringPos++;
} |
a noter que le composant pPos est déclaré comme:
la chaine de caractère en entrée est converti en enPOS par une méthode de la classe CPOS:
Code:
1 2 3 4 5 6 7 8 9 10 11
| enPOS CPOS::GetPOSWithPOSLabel(std::wstring wsPOS)
{
std::wstring twsPOS[NUMBER_OF_POS] = {L"NONE",L"PREP",L"ART",L"ADJ",L"NOUN",L"NUMBER",L"MARK",
L"SENT",L"STOPMARK",L"COMMA",L"CONJ",L"PRONOUN",L"VERB",L"AUX",L"ADV",L"PARTICIPLE",L"BLANK",
L"ABREV",L"OTHER"};
unsigned int iPOS = NUMBER_OF_POS;
while (--iPOS > POS_NONE && twsPOS[iPOS] != wsPOS);
return (enPOS)iPOS;
} // Return the enum of the POS like in the INI file |
J'ai donc en retour de cette méthode une variable curpos de type enPOS que je pousse dans la liste
et le compilateur me répond:
Code:
1 2 3 4 5 6 7
| 1>..\..\..\..\Linguistic\Analyser\src\chunker.cpp(187): error C2664: 'void std::list<_Ty>::push_back(_Ty &&)'*: impossible de convertir le paramètre 1 de 'enPOS' en 'std::wstring &&'
1> with
1> [
1> _Ty=std::wstring
1> ]
1> Raison*: impossible de convertir de 'enPOS' en 'std::wstring'
1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé |
ou est ce qu'il va chercher un _Ty = std::wstring
qui me le dira sera :ccool:
Quand je me pose sur pListPosVerb
Quand je me pose sur pListPosVerb je demande la déclaration et je tombe sur la bonne déclaration qui est:
Code:
std::list<enPOS>* pListPosVerb;