[*]Teste le retour de tes new.
Je l'ai déja fait et j'ai non Initialisé sur toutes les valeurs
[*]Vérifie qu'entre la création de ces variable et l'appel de la condition tu ne modifie pas les variables
je les initialise sur la base de ce qu"elle doivent avoir
Essaye d'utiliser le moins possible new (préfère mon_objet(mes_valeurs_d_initialisation)
je ne sais pas comment faire
mais j'ai essayé de passer par une liste( sans succès):
la ListAnalysedWord n'est pas allouée
pListAnalysedWord = new std::list<stAnalysedWord*>();
j'ai essayé le conseil
pListAnalysedWord = mon_objet(mes_valeurs_d_initialisation);
le compilateur m'a jeté:
1 2
| 1>..\..\..\..\Linguistic\ParserManager\src\ParserManager.cpp(624): error C2065: 'mes_valeurs_d_initialisation'*: identificateur non déclaré
1>..\..\..\..\Linguistic\ParserManager\src\ParserManager.cpp(624): error C3861: 'mon_objet'*: identificateur introuvable |
Je suis donc aller en arrière.
le résultat de l'exécution de la liste est:pListAnalysedWord = <valeur non définie>
je vous donne l'interface:
void CParserManager::BSplitTag( char* pNextToken, char* pWord, char* pPos, char* pFlex, std::list<stAnalysedWord*>* pListAnalysedWord, unsigned long* ulWordNumber)
je vous donne une partie du code mis à jour:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| len = strlen( pNextToken);
std::string sWord = pNextToken;
int npos = sWord.find( "(");
if( npos != -1)
{
pListAnalysedWord = new std::list<stAnalysedWord*>();
LWord = "";
sFlex = "";
LWord = sWord.substr( 0, npos);
sFlex = sWord.substr( npos+1, len);
LWord += sFlex;
pNextToken = (char*)LWord.c_str();
// il reste à provisionner le résultat de la découpe : (
pNextWord = new stAnalysedWord();
pNextWord->wsWord = L"(";
pNextWord->wsLemma = L"(";
pNextWord->POS = POS_MARK;
pNextWord->ulStart = *ulWordNumber;
pNextWord->ulLength = 1;
pNextWord->iExcluded = 0;
pNextWord->Gender = GENDER_NONE;
pNextWord->iNbr = NBR_NONE;
pNextWord->iPers = PERS_NONE;
pListAnalysedWord->push_back( pNextWord);
} |
Partager