Dlaczego GCC 4.7 narzeka podczas tworzenia instancji klasy wewnątrz funkcji (ze wskaźnikiem)?Ostrzeżenie GCC [Wuninitialized]
Zła:
#include "foo.h"
int fn() {
Foo *foo;
foo->method();
return 0;
}
main.cpp W funkcji składowej 'Int foo()' main.cpp: 21: 52: uwaga: 'N' mogą być stosowane w tym niezainicjowanego funkcja [-Wuninitialized]
Dobre:
#include "foo.h"
Foo *foo;
int fn() {
foo->method();
return 0;
}
Dobre:
#include "foo.h"
int fn() {
Foo foo;
foo.method();
return 0;
}
Zmienne statyczne są inicjowane wartością, więc drugi fragment nie powoduje ostrzeżenia. Co do reszty, wybierz dobrą książkę o C++. –
Czy możesz zadać sobie pytanie, aby opublikować błędy dokładnie tak, jak zostały zgłoszone przez kompilator pod kątem kodu, który napisałeś. "main.cpp: W funkcji członka 'int foo()': main.cpp: 21: 52: ostrzeżenie: 'fn' może być użyty niezainicjowany w tej funkcji [-Wuninitialized]" To nie ma sensu, 'foo' nie jest funkcja, nie mówiąc już o funkcji członkowskiej, a 'fn' nie jest zmienną. –
Wygląda na to, że nazwy "foo' i" fn' zostały odwrócone w skopiowanym komunikacie o błędzie. Albo te komunikaty kompilatora C++ osiągnęły nowy poziom błędnego ukierunkowania. – user268396