J'emballage une classe qui la lecture d'un fichier de données binaires sur mesure et rend les données disponibles à un .net/C# classComment « épingler » des pointeurs C++/CLI
Cependant quelques lignes plus bas le code, je commence à obtenir l'erreur de violation d'accès mémoire qui je crois est due à la GC mémoire se déplacer, la classe est gérée
Voici le code d'appel en C# - lecteur de code mixte (géré des méthodes wrapper sur l'ancien code non géré)
if (! reader.OpenFile(...))
return ;
foreach(string fieldName in fields)
{
int colIndex = reader.GetColIndex(fieldName);
int colType = reader.GetColType(colIndex); // error is raised here on 2nd iteration
}
for (int r = 0 ; r < reader.NumFields(); r++)
{
foreach(string fieldName in fields)
{
int colIndex = reader.GetColIndex(fieldName);
int colType = reader.GetColType(colIndex); // error is raised here on 2nd iteration
switch (colType)
{
case 0 : // INT
processField(r, fieldName, reader.GetInt(r,colIndex));
break ;
....
}
}
}
....
Le lecteur a une ancienne instance de classe non gérée nce qui contient les données binaires dans la mémoire et il est un type de pointeur depuis une classe ne peut pas géré maintenir un type non géré
je l'ai regardé interior_ptr, pin_ptr mais ils donnent une c3160 d'erreur ne peut pas être dans une classe gérée
Une solution de contournement? BTW, c'est mon 1er programme C++ depuis très longtemps!
MISE À JOUR: mis à jour le Q, encore une fois ce qui précède est le code d'appel et le lecteur est mélangé (géré + ancien code non géré)
& oui les arguments sont valables
est le lecteur en C++? Le code ci-dessus ressemble plus à C# avec le foreach plutôt que pour chacun. – dkackman
Quel type est 'lecteur'? Est-ce un type géré? Quelle est la valeur de 'colType'? Est-ce une valeur valide? –
Est-ce que le 'foreach' est un mot-clé C# ou utilisez-vous la bibliothèque' boost'?AFAIK, C++ n'a pas de mot clé 'foreach', ce qui signifie que vous n'écrivez pas en C++! –