2008-12-14 6 views

Répondre

10

Vous ne pouvez pas instancier un objet dans une instruction case à moins de le placer dans une nouvelle étendue. En effet, sinon vous pourriez faire quelque chose comme ceci:

switch(...) { 
    case A: 
     MyClass obj(constructor stuff); 
     // more stuff 
     // fall through to next case 
    case B: 
     // what is the value of obj here? The constructor was never called 
    ... 
} 

Si vous souhaitez que l'objet pour durer pendant toute la durée de l'affaire, vous pouvez le faire:

switch(...) { 
    case A: { 
     MyClass obj(constructor stuff); 
     // more stuff 
     // fall through to next case 
    } 
    case B: 
     // obj does not exist here 
    ... 
} 

C'est le même dans l'objectif C ainsi que C et C++.

+0

Merci Graeme! Shoulda a pensé cela. – Joe

Questions connexes