const int bob = 0;
if(bob)
{
int fred = 6/bob;
}
si ottiene un errore sulla linea di cui è fatto il divario: "Errore C2124: dividere o mod per zero"MSVC++ errore su una divisione per 0 che non accadrà mai! risolvere?
che è zoppo, perché è altrettanto inevitabile che il 'caso' di controllo fallirà, in quanto è la divisione che si tradurrà in un div per 0. francamente non vedo alcun motivo per il compilatore di valutare qualsiasi cosa nel "se", tranne che per assicurare l'integrità del tutore.
in ogni caso, ovviamente, che ad esempio non è il mio problema, il mio problema nasce quando fare cose complicate modello per cercare di fare il più al momento della compilazione del possibile, in alcuni casi, gli argomenti possono essere 0.
c'è comunque risolvere questo errore? o disabilitarlo? o qualsiasi soluzione alternativa migliore:
attualmente l'unico lavoro intorno a cui riesco a pensare (cosa che ho fatto prima quando ho riscontrato lo stesso problema con l'accesso enum ricorsivo) è utilizzare la specializzazione dei modelli per fare il "se".
Oh sì, sto usando Visual Studio Professional 2005 SP1 con la correzione vista/win7.
Si potrebbe provare ad assegnare a una variabile locale quindi dividendo per quello. – Artelius
Non so se funzionerà, ma che ne dici: int fred = 6/(bob? Bob: 1); –
@Jeremy Friesner: carino! che funziona e risolverà il mio problema, sentitevi liberi di metterlo come risposta! – matt