| 	
	
	
		
		|||||||
  | 
		
| 
 | 
![]()  | 
	
	
| 
		 | 
	Strumenti | 
| 		
			
			 | 
		#1 | 
| 
			
			
			
			 Member 
			
		
			
			
			Iscritto dal: May 2008 
				
				
				
					Messaggi: 54
				 
				
				
				
				 | 
	
	
	
	
		
			
			 
				
				[C++] Deque lancia un out_of_range
			 
			
		ho un programma che deve acquisire dei dati in tempo reale. C'è una classe che si occupa di gestire il concetto di "array circolare", ad un certo punto lancia un eccezione di tipo out_of_range. Il codice è questo: 
		
	
		
		
		
		
			Codice: 
		
        T operator[](size_t index) const {
		return this->get_(index);
	}
	T get_(size_t index) const {
		return (index < this->container_.size()) ? this->container_[index] : T();
	}
std::deque<T> container_; Le mie domande sono: 
 Useo windows 8.1 e vs2013 Grazie a chiunque sappia aiutarmi! 
				__________________ 
		
		
		
		
	
	Io voglio fottermene, io voglio scrivere che la mafia è una montagna di m***a, io voglio URLARE! -Peppino Impastato, I 100 passi-  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Oct 2005 
				
				
				
					Messaggi: 3306
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		Non avendo visto nè l'errore preciso nè tutto il codice, sei sicuro che l'eccezione venga sollevata da this->container_[index] ?
		 
		
	
		
		
		
		
		
	
	 | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#3 | |
| 
			
			
			
			 Member 
			
		
			
			
			Iscritto dal: May 2008 
				
				
				
					Messaggi: 54
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 comunque sono sicurissimo che venga l'eccezione venga sollevata da this->container_[index] ma credo di aver capito perché: 1- innanzitutto l'MSDN, che avrei dovuto consultare prima di cplusplus.com, dice che visual studio permette a deque di lanciare eccezioni in alcune particolari configurazioni di debug. E vabbò, abbastanza ovvio a questo punto, ma fa piacere trovarlo scritto da qualche parte. 2- c'è una race condition: se un altro thread aggiunge dei dati al vettore la dimensione cambia e tutti gli iteratori attulmente in uso su quel particolare contenitore vengono invalidati, purtroppo mi toccherà mettere qualche mutex. 
				__________________ 
		
		
		
		
	
	Io voglio fottermene, io voglio scrivere che la mafia è una montagna di m***a, io voglio URLARE! -Peppino Impastato, I 100 passi-  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#4 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Sep 2009 
				
				
				
					Messaggi: 638
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#5 | |
| 
			
			
			
			 Member 
			
		
			
			
			Iscritto dal: May 2008 
				
				
				
					Messaggi: 54
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 
				__________________ 
		
		
		
		
	
	Io voglio fottermene, io voglio scrivere che la mafia è una montagna di m***a, io voglio URLARE! -Peppino Impastato, I 100 passi-  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#6 | |
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Oct 2005 
				
				
				
					Messaggi: 3306
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Se pensi che i più recenti bug di livello mondiale sono dovuti a questo tipo di errore tale controllo del compilatore non mi pare poi una cosa così pessima...  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#7 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Sep 2009 
				
				
				
					Messaggi: 638
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Di solito sono problemi a compile time sia di linguaggio che di libreria (C++11 sopratutto, che anche in VS2013 non è completo).  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
		
		  
	   | 
| Strumenti | |
		
  | 
	
		
  | 
Tutti gli orari sono GMT +1. Ora sono le: 09:31.









		
		
		




 
 







