J'essaie d'obtenir du code C++ écrit à l'origine dans Microsoft Visual Studio (VS) 2003 pour compiler sous VS 2008 et j'ai du mal à trouver une solution efficace pour assigner un vecteur :: itérateur au début d'un tableau char. Je sais que itérateurs allaient d'être un défini comme un type simple pointeur (T *) à un type de classe entre VS 2003 et VS 2005. Voici un exemple simple de ce que je parle:Affectation de vector :: iterator à un tableau de tableau de caractères VS 2003
typedef std::vector<char> CharContainer;
typedef CharContainer::iterator InputIt;
int FindNumMsgs(InputIt _inputIter, int _len);
int ProcessBufferForMsgs(char buf[], const size_t maxlen)
{
int numMsgs = FindNumMsgs(InputIt(buf), maxlen);
...
}
Ainsi, dans VS 2003, cela compile et fonctionne sans problème (puisque les itérateurs sont définis comme T *). Dans VS 2008, cette erreur avec C2440 (fonction-style-cast) puisque je ne peux plus simplement assigner l'itérateur avec le pointeur buf. Que ferais-je pour que cela fonctionne dans VS 2008 maintenant que les itérateurs sont un type de classe? Je pourrais copier le tampon dans un vecteur, puis passer dans myVec.begin(), mais je dois penser que je peux éviter cette surcharge.
Ceci est un exemple parfait de "dette technique". Quelqu'un a utilisé un hack rapide pour faire fonctionner les choses, maintenant il vous reste à rembourser l'hypothèque. Pardon. –