Từ tài liệu tiêu chuẩn Sec 9.8.1,
Một lớp học có thể được khai báo trong định nghĩa hàm; một lớp như vậy được gọi là một lớp địa phương. Tên của một lớp địa phương là địa phương đến phạm vi kèm theo của nó. Lớp địa phương nằm trong phạm vi của phạm vi bao quanh và có cùng quyền truy cập vào các tên bên ngoài chức năng cũng như chức năng kèm theo. Các khai báo trong một lớp địa phương chỉ có thể sử dụng các tên kiểu, các biến tĩnh, các biến và hàm bên ngoài, và các điều tra từ phạm vi kèm theo.
Một ví dụ từ các tài liệu tiêu chuẩn riêng của mình,
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
};
// ...
}
Do đó truy cập vào một biến tự động bên trong một lớp địa phương là không thể. Hãy đặt giá trị cục bộ của bạn thành static
hoặc giá trị toàn cục, tùy theo điều kiện nào là thích hợp cho thiết kế của bạn.
Kiểu trả về của 'main()' phải luôn là' int'. –