Heim >Backend-Entwicklung >C++ >Warum wirft mein Code „Für die Klasse „Blowfish' existiert kein Standardkonstruktor' aus?
Standardkonstruktor fehlt für die Klasse „Blowfish“: Den Fehler verstehen
Der Fehler „Für die Klasse „Blowfish“ existiert kein Standardkonstruktor“ tritt auf beim Versuch, eine Instanz der Blowfish-Klasse zu erstellen, ohne Argumente anzugeben, obwohl ein Konstruktor definiert wurde, der einen BlowfishAlgorithm erfordert Argument.
Grund für den Fehler
Wenn einer Klasse ein Konstruktor fehlt, generiert der Compiler standardmäßig einen Standardkonstruktor, der keine Argumente akzeptiert. Wenn jedoch ein Nicht-Standardkonstruktor definiert wird (d. h. einer, der Argumente erfordert), geht der Compiler davon aus, dass die Konstruktorbehandlung explizit vom Entwickler übernommen wird, und generiert nicht mehr automatisch einen Standardkonstruktor. Daher ist die Angabe von Argumenten beim Erstellen einer Instanz der Klasse obligatorisch.
Lösungen
Um diesen Fehler zu beheben, haben Sie mehrere Möglichkeiten:
Blowfish() = default;
Blowfish blowfish(BlowfishAlgorithm::CBC);
class GameCryptography { public: GameCryptography(BlofishAlgorithm); // Constructor with argument // Generate a default constructor by delegating to the compiler GameCryptography() = default; };
Zusätzliche Hinweise
Es ist hervorzuheben, dass ECB, CBC, CFB usw. Modi von darstellen Betrieb für Verschlüsselungsalgorithmen und nicht für die Verschlüsselungsalgorithmen selbst. Dieser semantische Fehler hat zwar keinen Einfluss auf die Kompilierung, kann aber für Codeleser verwirrend sein.
Das obige ist der detaillierte Inhalt vonWarum wirft mein Code „Für die Klasse „Blowfish' existiert kein Standardkonstruktor' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!