Tại sao GCC 4.7 phàn nàn khi khởi tạo một lớp bên trong một hàm (với một con trỏ)?Cảnh báo GCC [Wuninitialized]
Xấu:
#include "foo.h"
int fn() {
Foo *foo;
foo->method();
return 0;
}
main.cpp: Trong chức năng thành viên 'int foo()': main.cpp: 21: 52: cảnh báo: 'fn' có thể được sử dụng chưa được khởi tạo trong này chức năng [-Wuninitialized]
Tốt:
#include "foo.h"
Foo *foo;
int fn() {
foo->method();
return 0;
}
Tốt:
#include "foo.h"
int fn() {
Foo foo;
foo.method();
return 0;
}
Biến tĩnh được khởi tạo giá trị, do đó đoạn mã thứ 2 không gây ra cảnh báo. Đối với phần còn lại, chọn một cuốn sách hay về C++. –
Bạn có thể vui lòng cẩn thận để đăng lỗi chính xác như chúng được báo cáo bởi trình biên dịch cho mã chính xác mà bạn đã đăng. "main.cpp: Trong hàm thành viên 'int foo()': main.cpp: 21: 52: cảnh báo: 'fn' có thể được sử dụng uninitialized trong hàm này [-Wuninitialized]" Điều này không có ý nghĩa, 'foo' không phải là một hàm cho phép một mình một hàm thành viên và 'fn' không phải là một biến. –
Có vẻ như tên 'foo' và' fn' đã được đảo ngược trong thông báo lỗi bạn đã sao chép. Các thông điệp trình biên dịch đó hoặc C++ đã đạt được một mức độ sai lệch mới. – user268396