Wie lege ich den Körper des statischen Konstruktors einer verwalteten Klasse außerhalb der Klassendeklaration ab? Diese Syntax scheint kompilierbar zu sein, aber bedeutet das wirklich statischen Konstruktor oder nur eine statische (= nicht sichtbare externe Übersetzungseinheit) Funktion?C++/CLI, statischer Konstruktor außerhalb der Klassendeklaration
Antwort
Ja, das ist die richtige Syntax zum Erstellen eines statischen C++/CLI-Konstruktors. Sie können wissen, dass es keine statische Funktion erstellt, da dies keine gültige Funktionsdeklarationssyntax ist. Für Funktionen muss der Rückgabetyp angegeben werden. Außerdem würde sich der Compiler beschweren, dass Foo()
kein Mitglied der Klasse Foo ist, wenn es nicht mit dem Konstruktor verknüpft ist, den Sie in der Klassendefinition deklariert haben.
Sie können die ziemlich leicht testen:
using namespace System;
ref class Foo {
static Foo();
Foo();
}
static Foo::Foo() { Console.WriteLine("Static Constructor"); }
Foo::Foo() { Console.WriteLine("Constructor"); }
int main(array<System::String ^> ^args)
{
Foo ^f = gcnew Foo();
Console.WriteLine("Main");
}
Dies würde Ausgabe:
Static Constructor
Constructor
Haupt
Ja, danke. Ich bekam wegen dieser Syntax einen Fehler, dann bemerkte ich, dass es etwas mit einem statischen Konstruktor zu tun hatte. – liori
- 1. Öffentlicher Konstruktor und statischer Konstruktor
- 2. Statischer Konstruktor & Singleton-Klasse
- 3. Typinitialisierung (statischer Konstruktor) Ausnahmebehandlung
- 4. Statischer Konstruktor und Ausnahmen
- 5. Statischer Konstruktor in Javascript ES6
- 6. Statischer Initialisierer läuft nach dem Konstruktor, warum?
- 7. C# Instance Constructor vs Statischer Konstruktor
- 8. Statischer Konstruktor für die gesamte Assembly
- 9. Child statischer Konstruktor nicht aufgerufen, wenn Basiselement
- 10. Statischer Konstruktor, der zweimal für PerSession WCF-Dienst aufgerufen wird
- 11. Aussagen in anonymer Klassendeklaration
- 12. Eine seltsame C++ Klassendeklaration
- 13. Seltsame Klassendeklaration
- 14. Sonar Zweigüberdeckung auf Klassendeklaration
- 15. Was bedeutet ein statischer Modifikator für einen Konstruktor?
- 16. Java: Ich kann meine Action nicht außerhalb der Konstruktor setzen
- 17. Wann wird ein statischer Konstruktor in C# aufgerufen?
- 18. Warum Makro in der Klassendeklaration verwenden
- 19. "where" Schlüsselwort in der Klassendeklaration in cis
- 20. Statischer Klassenkonstruktor in VB
- 21. Warum als Klassendeklaration
- 22. Boost.Python: einen Konstruktor außerhalb einer Klasse definieren
- 23. Fehler modale Probe mit Super außerhalb Konstruktor
- 24. Klassendeklaration innerhalb Funktion Parameterliste
- 25. Statischer Variablenzeiger?
- 26. Eclipse CDT-Syntaxfehler bei Klassendeklaration
- 27. Tomcat gesicherter statischer Inhalt
- 28. Namespace-Einschränkung mit generischer Klassendeklaration
- 29. Warum statischer Konstruktor nicht vor dem ersten Aufruf der Klassenmethode aufgerufen wurde
- 30. Leere Klassendeklaration in Header-Datei?
Dies könnte Ihnen helfen: http://www.drdobbs.com/184401941 – fingerprint211b
Finger print211b: Das gesehen. Dieser Artikel beschreibt, wie es funktioniert, aber sie erwähnen diese bestimmte Verwendung nicht. – liori