Ich bin sehr neu für Template-Klasse und Template-Funktion. Dieses Mal habe ich versucht, meine eigene Nullable-Klasse zu erstellen, die jedem Objekt erlaubt, einen Wert oder Nullwert zu haben.C++ Zeiger als Mitglied der Template-Klasse
template<typename _Type>
class Nullable
{
private:
_Type *_Pointer
public:
Nullable::Nullable(const _Type &x)
{
this->_Pointer = new _Type(x);
};
Wenn jedoch I kompilieren, gibt sie mir 2 Fehler:
- C2059: Syntaxfehler: 'this'
- C2238: unerwartetes Token (n) vorangehenden ';'
an der Linie des Konstruktors über.
mir also bitte erklären, wie man einen Konstruktor richtig für Template-Klasse zu schreiben. Und wird empfohlen, Pointer als Mitglied der Template-Klasse zu verwenden? Vielen Dank im Voraus.
Wenn Sie syntaktisch Inline-Funktionen, der Namensraum der Klasse, die Sie in sind, wird implizit hinzugefügt, so dass Sie versuchen, Nullable :: Nullable :: Nullable zu definieren. – xaxxon
Eine andere Sache zu denken ist, die sich für diesen Speicher verantwortlich ist, dass Sie in Ihrem Konstruktor Zuteilung, da die Klasse reinigt es nicht auf. Ich würde empfehlen, stattdessen einen Rohzeiger zu verwenden, verwenden std :: unique_ptr <_Type> statt, so dass der Speicher automatisch gereinigt wird, wenn Ihr Nullable Objekt zerstört wird. – xaxxon