a partir de documentos estándar Sec 9.8.1,
Una clase puede ser declarado dentro de una definición de función; tal clase se llama una clase local. El nombre de una clase local es local en su alcance adjunto. La clase local está en el alcance del alcance adjunto, y tiene el mismo acceso a los nombres fuera de la función que la función adjunta. Las declaraciones en una clase local solo pueden usar nombres de tipos, variables estáticas, variables externas y funciones, y enumeradores del alcance adjunto.
Un ejemplo de la propia docs estándar,
int x;
void f()
{
static int s ;
int x;
extern int g();
struct local {
int g() { return x; } // error: x is auto
int h() { return s; } // OK
int k() { return ::x; } // OK
int l() { return g(); } // OK
};
// ...
}
acceso Por lo tanto una variable auto dentro de una clase local no es posible. Haga que su valor local sea static
o uno global, cualquiera que sea apropiado para su diseño.
El tipo de retorno de 'main()' siempre debe ser 'int'. –