Uważam, że jednym z najbardziej czasochłonnych błędów kompilatora jest "nie można utworzyć instancji klasy abstrakcyjnej", ponieważ problem jest zawsze taki, że nie zamierzałem, aby klasa być abstrakcyjne, a kompilator nie podaje, które funkcje są abstrakcyjne. Musi istnieć inteligentniejszy sposób rozwiązania tych problemów niż czytanie nagłówków 10 razy, aż wreszcie zauważę gdzieś brakujący "const". Jak rozwiązać te problemy?Metoda rozwiązywania błędów: "nie można utworzyć instancji klasy abstrakcyjnej"
13
A
Odpowiedz
6
C++ powie ci dokładnie, jakie funkcje są abstrakcyjne, a gdy zostały zgłoszone:
class foo {
virtual void x() const = 0;
};
class bar : public foo {
virtual void x() { }
};
void test() {
new bar;
}
test.cpp: In function ‘void test()’:
test.cpp:10: error: cannot allocate an object of abstract type ‘bar’
test.cpp:5: note: because the following virtual functions are pure within ‘bar’:
test.cpp:2: note: virtual void foo::x() const
Więc może spróbuj kompilowania kodu z C++, lub określić kompilatora więc inni mogą dać przydatnych wskazówek dla konkretnego kompilatora.
45
cannot instantiate abstract class
Na podstawie tego błędu, wydaje mi się, że używasz Visual Studio (ponieważ to co mówi Visual C++ podczas próby utworzenia wystąpienia klasy abstrakcyjnej).
Spójrz na okno wyjściowe Visual Studio (Widok => Dane wyjściowe); wyjście powinno zawierać oświadczenie po błędu stwierdzając:
stubby.cpp(10) : error C2259: 'bar' : cannot instantiate abstract class
due to following members:
'void foo::x(void) const' : is abstract
stubby.cpp(2) : see declaration of 'foo::x'
(To jest błąd podane na przykład kodu bdonlan za)
W Visual Studio, tylko okno „Lista błędów” wyświetla pierwszą linię Komunikat o błędzie.
1
C++ Builder mówi, która metoda jest abstrakcyjna:
class foo {
virtual void x() const = 0;
};
class bar : public foo {
virtual void x() { }
};
new bar;
[BCC32 Error] File55.cpp(20): E2352 Cannot create instance of abstract class 'bar'
[BCC32 Error] File55.cpp(20): E2353 Class 'bar' is abstract because of 'foo::x() const = 0'
Powiązane problemy
- 1. Nie można utworzyć instancję klasy abstrakcyjnej lub interfejsu
- 2. Dlaczego nie możemy utworzyć instancji interfejsu lub klasy abstrakcyjnej w języku Java bez metody anonimowej klasy?
- 3. BroadcastReceiver: nie można utworzyć instancji klasy; nie pusty konstruktor
- 4. Tworzenie instancji klasy abstrakcyjnej lub anonimowej
- 5. Nie można utworzyć instancji TestExecutionListener
- 6. Samouczek Arquillian JPA: Nie można utworzyć nowej instancji klasy org.jboss.arquillian.test.impl.EventTestRunnerAdaptor
- 7. NSInvalidUnarchiveOperationException: Nie można utworzyć instancji klasy o nazwie NSLayoutConstraint
- 8. Nie można utworzyć instancji klasy mediaextractor przy użyciu metody setDataSource()
- 9. Błąd przy użyciu std :: make_shared instancji klasy abstrakcyjnej
- 10. Nie można utworzyć instancji odbiornika java.lang.ClassNotFoundException
- 11. Klasa "Pokój" jest abstrakcyjna; nie można utworzyć instancji
- 12. Metoda zastępowania rozwiązywania nawrotów
- 13. instancja klasy abstrakcyjnej
- 14. Metoda rozwiązywania sudoku
- 15. ViewPagerIndicator CirclePageIndicator nie można utworzyć instancji
- 16. AVAssetExportSession Nie można utworzyć pliku błędów -12115
- 17. Nie można utworzyć błędów StyleCop jako błędów kompilacji (zamiast ostrzeżeń)
- 18. Nie można utworzyć instancji typu Set
- 19. Nie można utworzyć instancji dodatku Log4j
- 20. Nie można utworzyć instancji następujących klas: - com.google.android.gms.plus.PlusOneButton
- 21. Generics nie metoda rozwiązywania typów prawidłowo
- 22. Korzystanie z metody abstrakcyjnej klasy
- 23. Określa, czy nie można wykluczyć konstruktora abstrakcyjnej klasy bazowej?
- 24. ActionMailer metoda instancji używany jak metody klasy
- 25. Uzyskaj wszystkie odziedziczone klasy ogólnej klasy abstrakcyjnej
- 26. Bajt Buddy: Utwórz implementację dla abstrakcyjnej klasy
- 27. Nie można utworzyć wystąpienia błędu klasy błędu
- 28. Intelli-J: nie można utworzyć pliku klasy?
- 29. Ogólna metoda w klasie abstrakcyjnej
- 30. Wywołanie java.lang.RuntimeException: nie można utworzyć instancji komponentu ComponentInfo {...}: java.lang.ClassNotFoundException: Nie znaleziono klasy
który kompilatora? – Naveen
Niektóre kompilatory * DO * wskazują, które metody spowodowały, że klasa jest abstrakcyjna, gdy wystąpi błąd instancji. –