Einen vector in einer Klasse definieren
-
@znieh99 sagte in Einen vector in einer Klasse definieren:
"Ein Member einer verwalteten Klasse kann kein nicht verwalteter Klassentyp sein"
Also, das ist kryptischer Murks... wunder mich bei M$ aber kaum.
Auf Deutsch steht da: Entweder es ist Mitglied einer verwalteten Klasse oder nicht.
-
Man kann
std::vector
schon nutzen, aber halt als "unmanaged resource". Also konkret, wenn ich mich richtig erinnere, kann man einfach Zeiger auf Zeugs wiestd::vector
machen. Also manuellnew
in ctor +delete
im "destruktor" (finalizer).
-
@hustbaer Danke, das versuche ich!
-
@znieh99
Also wenn du unbedingt C++/CLI nutzen möchtest, dann würde ich dir die folgenden MSDN Ressourcen empfehlen:https://learn.microsoft.com/en-us/cpp/dotnet/vector-stl-clr?view=msvc-170
https://learn.microsoft.com/en-us/cpp/dotnet/stl-clr-library-reference?view=msvc-170To use STL/CLR:
Include headers from the cliext include subdirectory instead of the usual C++ Standard Library equivalents.
Qualify library names with cliext:: instead of std::.
-
@Quiche-Lorraine Danke!
-
@znieh99 sagte in Einen vector in einer Klasse definieren:
@Quiche-Lorraine Danke!
Dann sei dir aber im klaren, dass du damit kein C++ lernst sondern C++/CLI was nicht das selbe ist!
-
@firefly sagte in Einen vector in einer Klasse definieren:
Dann sei dir aber im klaren, dass du damit kein C++ lernst sondern C++/CLI was nicht das selbe ist!
Nun, das habt ihr mir ja sehr deutlich klar gemacht. Danke!
-
firefly schrieb:
Dann sei dir aber im klaren, dass du damit kein C++ lernst sondern C++/CLI was nicht das selbe ist!
Und je länger du mit C++/CLI arbeitest, desto mehr wird dir das auf die Füße fallen.
Alleine bei der Const Correctness gibt es größere Unterschiede:
literal
(C++/CLI) <->const
,readonly
(C#) <->const
,static const
,constexpr
,static constexpr
,constval
(C++)
-
@Quiche-Lorraine sagte in Einen vector in einer Klasse definieren:
Und je länger du mit C++/CLI arbeitest, desto mehr wird dir das auf die Füße fallen.
Ist ja gut. Ich werde mich auch mit C# auseinander setzen aber erst möchte ich mal die Aufgaben aus meinem Buch über C++ fertig machen.
-
@znieh99 sagte in Einen vector in einer Klasse definieren:
Ist ja gut. Ich werde mich auch mit C# auseinander setzen aber erst möchte ich mal die Aufgaben aus meinem Buch über C++ fertig machen.
?
Wir versuchen dir gerade klarzumachen, dass C++/CLI nicht C++ ist und du antwortest, dass du erstmal die C++ Aufgaben aus deinem C++ Buch lösen möchtest, dass C++/CLI Aufgaben stellt? Irgendwas passt hier nicht zusammen. Wie heißt denn das Buch?
-
@DocShoe C++ mit Visual Studio 2022 und Windows Forms- Anwendungen von Richard Kaiser
-
@znieh99 sagte in Einen vector in einer Klasse definieren:
C++ mit Visual Studio 2022 und Windows Forms- Anwendungen von Richard Kaiser
Jo und da haben wir den Mist.
Da ich immer mal wieder gefragt werde, ob und wie man C++ in Verbindung mit C#, .NET Framework und .NET verwenden kann, hier eine kurze Einführung.
Quelle: https://link.springer.com/book/10.1007/978-3-662-65257-2
Das Buch ist per se sehr unglücklich. Erst eine Einführung in C++17 und dann kommt ein Spruch der Form "C++ in Verbindung mit C#, .NET Framework und .NET verwenden".
Ich frage mich wohl wie der folgende Code in C++/CLI aussieht:
#include <string> constexpr bool EvenLen(std::string_view s) { return (s.length() % 2 != 0); } int main(int argc, char* argv[]) { static_assert(EvenLen("Hallo Welt"), "String muss eine gerade Laenge aufweisen!"); static_assert(EvenLen("Hallo Welt2"), "String muss eine gerade Laenge aufweisen!"); }
Der Code muss man unter Visual Studio 2019 gar nicht kompilieren. Nachdem man den Code gespeichert hat, zeigt die IDE automatisch bei der ersten
static_assert
Anweisung einen Kringel an. Geht man mit dem Mauscursor drüber, so erscheint die Meldung "String muss eine gerade Laenge aufweisen!".Spiele ruhig mal damit rum! Verändere die Länge des Strings!