Trovo che uno degli errori del compilatore più dispendiosi in termini di tempo per me è "impossibile istanziare la classe astratta", poiché il problema è sempre che non intendevo per la classe essere astratto e il compilatore non elenca quali funzioni sono astratte. Deve esserci un modo più intelligente per risolverli rispetto alla lettura delle intestazioni 10 volte fino a quando finalmente noterò un "const" mancante da qualche parte. Come risolvi questi?Metodo per risolvere l'errore: "impossibile istanziare la classe astratta"
risposta
C++ ti dice esattamente quali funzioni sono astratti, e dove sono dichiarate:
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
Quindi, forse, provare a compilare il codice con C++, o specificare il compilatore così gli altri possono dare suggerimenti utili per la vostra specifica del compilatore.
cannot instantiate abstract class
Sulla base di questo errore, la mia ipotesi è che si utilizza Visual Studio (dal momento che è quello di Visual C++ dice quando si tenta di creare un'istanza di una classe astratta).
Guarda la finestra di output di Visual Studio (Visualizza => Output); l'uscita dovrebbe contenere una dichiarazione dopo l'errore affermando:
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'
(Questo è l'errore di data per il codice di esempio di bdonlan)
In Visual Studio, la finestra "Elenco errori" visualizza solo la prima riga di un messaggio di errore.
C++ Builder ti dice quale metodo è astratto:
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'
- 1. Impossibile istanziare la classe astratta ... con metodi astratti
- 2. È possibile istanziare una classe astratta?
- 3. metodo generico in classe astratta
- 4. Derive classe astratta da classe non astratta
- 5. Impossibile risolvere il metodo .runOnUiThread
- 6. Estendere classe astratta Singleton
- 7. Impossibile risolvere la classe MapActivity su Android
- 8. Registrati classe astratta e risolvere classe derivata con Unity
- 9. 'NSInvalidUnarchiveOperationException', motivo: 'Impossibile istanziare la classe denominata MKMapView'
- 10. Metodo vuoto in una classe astratta
- 11. Classe astratta/metodo, come C# -> VB.NET
- 12. Impossibile risolvere il metodo startActivity()
- 13. Impossibile istanziare la mappa ... beh, perché no?
- 14. stesso metodo di interfaccia e classe astratta
- 15. Classe astratta senza alcun metodo astratto
- 16. Impossibile istanziare la sottoclasse di NSManagedObject
- 17. In grado di istanziare la classe python, nonostante sia astratta (usando abc)
- 18. Impossibile istanziare ricevitore java.lang.ClassNotFoundException
- 19. Istanziare dinamicamente una classe tramite la variabile
- 20. Impossibile istanziare TestExecutionListener
- 21. Utilizzare il valore audioSessionId per istanziare la classe AudioFx?
- 22. una classe astratta eredita un altro problema classe astratta
- 23. Impossibile istanziare l'applicazione com.android.tools.fd.runtime.BootstrapApplication
- 24. AndEngine - Impossibile istanziare l'attività
- 25. Impossibile risolvere una classe statica annidata ereditata durante la compilazione
- 26. Deserialize classe astratta
- 27. Istanziata classe astratta Java?
- 28. Impossibile istanziare il bean pagabile
- 29. sintassi Strano per istanziare una classe interna
- 30. Implementare la classe astratta come classe locale? pro e contro
quale compilatore? – Naveen
Alcuni compilatori * DO * indicano quale metodo/i ha causato l'astrazione della classe quando si verifica l'errore di istanza. –