Voglio chiederti un suggerimento, dato che sono un principiante e non ho trovato nessuna risposta adatta in internet. sto ottenendo questo errore: di debug Asserzione non riuscita - mappa/set iteratore non dereferencable alla linea che assomiglia a questo:C++ map/set iteratore non dereferibile
pointA = active->pointNext(timeNext);
con la funzione pointNext() come la vedo io è tutto ok , e quello che riguarda attiva, ho:
active = setS.data.end();
qualche informazione in più:
attiva è multinsieme < classA, ClassB :: ClassC> :: const_iterator
imposta ha: setS.Q, setS.W, setS.T e setS.data, per cui setS.data ha 0 in parentesi quadre. Quando ho la dichiarazione iteratore multiset nel file .cpp, durante il debug non posso entrare per vedere cosa è dentro attivo, quando è nel file .h, posso farlo.
Avendo in .cpp non riesco a inserire attivo, quindi posso immaginare che è come puntatore (iteratore) non può dereferenziare, perché è sbagliato dentro. Cosa succede se è vuoto, cioè se setS.data è vuoto? o se c'è della spazzatura dentro?
So che la cosa era in esecuzione sotto Linux in precedenza, c'è qualche funzionalità che devo cambiare per l'esecuzione su Windows forse? Ad esempio, per modificare un numero di parametri del modello su uno solo? (Correttamente attribuire setS.data a attiva, perché io non sono sicuro - lo faccio correttamente
Siamo spiacenti per questo post piuttosto caotica, ho voluto aggiungere la mia ipotesi che qualcuno li trascurare se? Se qualcosa qui non è chiaro o la mancanza di alcune informazioni, lo aggiungerò volentieri Puoi dirmi quali motivi potrebbero causare l'errore di dereferenziabilità che ottengo e dove dovrei cercarlo? Perché sono bloccato e non voglio t sapere come procedere.
alcun aiuto molto apprezzato, grazie!
certo, ora capisco. Potete spiegarmi se ho: 'multiset :: const_iterator attivo;' 'SomeClass setS;' 'std :: multiset data;' (l'ultimo come membro pubblico di una classe che si trova nello spazio dei nomi vlr) -> quale è esattamente il primo parametro del template per il multiset e il secondo? Ho la sensazione di non capire esattamente cosa viene ascritto, forse dopo qualche spiegazione potrei trovare più errore. Grazie! –
berndh
@eco_student: il secondo parametro di un set è il tipo utilizzato per confrontare gli oggetti del primo parametro. Ricorda che il set è un contenitore ordinato, quindi qui 'classB :: classC' è un tipo di comparatore che può confrontare oggetti di tipo' classA'. Vedi: http://www.sgi.com/tech/stl/multiset.html –