error: no default constructor exists for class 'MyClass' – C NO_DEFAULT_CONSTRUCTOR

NO_DEFAULT_CONSTRUCTOR

La dichiarazione di un qualsiasi costruttore personalizzato con parametri sopprime la generazione automatica del costruttore predefinito senza argomenti 'MyClass()', provocando errori quando si istanziano array o membri non inizializzati esplicitamente.

Cosa significa questo errore?

La dichiarazione di un qualsiasi costruttore personalizzato con parametri sopprime la generazione automatica del costruttore predefinito senza argomenti 'MyClass()', provocando errori quando si istanziano array o membri non inizializzati esplicitamente.

Messaggio originale

error: no default constructor exists for class 'MyClass'

Contesto e parole chiave

Alias

  • no default constructor exists for class C++

Messaggi alternativi

  • nessun costruttore di default disponibile per la classe

Prodotti

  • C++ Compiler (GCC g++ / Clang++ / MSVC)

Piattaforme

  • Linux
  • macOS
  • Windows

Parole chiave

  • c-plus-plus
  • Compilazione e Sintassi
  • cpp
  • cpp.compilatore.no-default-constructor-exists-for-class
  • errore-cpp-no-default-constructor-exists

Cause possibili

Causa tecnica per Errore C++: no default constructor exists for class (Costruttore Predefinito Mancante)

La dichiarazione di un qualsiasi costruttore personalizzato con parametri sopprime la generazione automatica del costruttore predefinito senza argomenti 'MyClass()', provocando errori quando si istanziano array o membri non inizializzati esplicitamente.

molto comune

Diagnosi

Diagnostica di compilazione e memoria per Errore C++: no default constructor exists for class (Costruttore Predefinito Mancante)

Compilare con lo standard appropriato (-std=c++20 o c++23) e attivare gli Address e Undefined Behavior Sanitizer.

Come leggere il risultato. Identifica errori di metaprogrammazione, violazioni di memoria o eccezioni non gestite.

terminal
g++ -std=c++20 -Wall -Wextra -fsanitize=address,undefined -g main.cpp -o app

Risoluzione

Risoluzione standard per Errore C++: no default constructor exists for class (Costruttore Predefinito Mancante)

Difficoltà: mediaRischio: basso

Applicare la correzione al codice C++ secondo gli idiomi moderni (RAII, smart pointer, concetti).

  1. Ispezionare la riga segnalata dal compilatore o lo stack trace di std::terminate
  2. Risolvere l'ambiguità nei template, firme di funzioni o gestione dei lock
  3. Ricompilare ed eseguire i test unitari con ThreadSanitizer / Valgrind
terminal
g++ -std=c++20 -Wall -Wextra main.cpp -o app

Domande frequenti

Come risolvere l'errore Errore C++: no default constructor exists for class (Costruttore Predefinito Mancante) in C++?

La dichiarazione di un qualsiasi costruttore personalizzato con parametri sopprime la generazione automatica del costruttore predefinito senza argomenti 'MyClass()', provocando errori quando si istanziano array o membri non inizializzati esplicitamente.

Approfondimenti

Schede correlate