Heim >Backend-Entwicklung >C++ >Warum wird in C beim Instanziieren einer Klasse mit einer eingebetteten Klasse ohne Standardkonstruktor die Meldung „Für die Klasse existiert kein Standardkonstruktor' angezeigt?

Warum wird in C beim Instanziieren einer Klasse mit einer eingebetteten Klasse ohne Standardkonstruktor die Meldung „Für die Klasse existiert kein Standardkonstruktor' angezeigt?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 00:36:16821Durchsuche

Why Does

"Kein Standardkonstruktor existiert für die Klasse" Fehler in C

Beim Versuch, eine Instanz der GameCryptography-Klasse zu instanziieren, ohne ein Konstruktorargument anzugeben , wird eine IntelliSense-Fehlermeldung angezeigt, die darauf hinweist, dass kein Standardkonstruktor für die Blowfish-Klasse vorhanden ist.

Dieser Fehler tritt auf, weil die Der GameCryptography-Konstruktor versucht, eine eingebettete Instanz von Blowfish zu initialisieren, ohne ein Konstruktorargument bereitzustellen. Standardmäßig synthetisiert C einen Konstruktor für eine Klasse ohne einen benutzerdefinierten. Wenn die Klasse jedoch über einen benutzerdefinierten Konstruktor verfügt, wird der Standardkonstruktor nicht synthetisiert.

Um den Fehler zu beheben, kann eine der folgenden Strategien implementiert werden:

  • Stellen Sie einen Standardkonstruktor bereit: Definieren Sie einen Standardkonstruktor für die Blowfish-Klasse, der das Algorithmusfeld mit einem Standardwert initialisiert, z als:
Blowfish() : _algorithm(CBC) {}
  • Konstruktorargument bereitstellen: Geben Sie beim Erstellen einer Instanz der Blowfish-Klasse ein explizites Konstruktorargument an, z. B.:
GameCryptography(unsigned char key[]) : _blowfish(CBC) {}
  • Verwenden Sie den C 11-Standardkonstruktor: In C 11 oder höher verwenden Sie das Schlüsselwort „default“, um den Compiler anzuweisen, den Standardkonstruktor zu generieren, der automatisch synthetisiert worden wäre, wenn kein benutzerdefinierter Konstruktor vorhanden gewesen wäre, wie zum Beispiel:
class Blowfish {
public:
    Blowfish(BlowfishAlgorithm algorithm) {}
    Blowfish() = default;
};
  • Korrekte Terminologien: Denken Sie außerdem darüber nach, die richtige Terminologie zu verwenden. Die Betriebsarten (z. B. ECB, CBC) sollten als solche bezeichnet werden und nicht gemeinsam als Algorithmen bezeichnet.

Das obige ist der detaillierte Inhalt vonWarum wird in C beim Instanziieren einer Klasse mit einer eingebetteten Klasse ohne Standardkonstruktor die Meldung „Für die Klasse existiert kein Standardkonstruktor' angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn