Ich mache eine Klasse in C ++, die jede Art von Variablen unterstützt, um mir in einem zukünftigen Projekt zu helfen. Die Sache ist, wenn ich versuche, einer void*
-Variable einen Wert zuzuweisen, bekomme ich den Fehler: void*
ist kein Zeiger-zu-Objekt-Typ. Hier ist der Code:
Ich sehe es so, als ob ich versuche, den Wert von x in dem für a reservierten Speicherblock zuzuweisen. Ich möchte, dass der in x gespeicherte Wert im Speicherblock von a gespeichert wird. Kann mir irgendjemand helfen?
Sie machen es zu kompliziert. Geben Sie a
als int *
an, oder besser: deklarieren Sie a
als int *, um damit zu beginnen.
Es gibt einfachere Möglichkeiten, ähnliche Dinge in C ++ zu tun, aber Sie scheinen hauptsächlich in der Pointer-Syntax gefangen zu sein.
Zuerst müssen Sie a
auf den entsprechenden Zeigertyp und dann auf die Referenz verweisen. Zweitens, verwenden Sie eine Vorlage - dafür sind sie da. Drittens, malloc und frei ist baaaad, OK? Nicht. Wenn Sie denken, dass dies ein guter Code ist, benötigen Sie ernsthafte Korrektur C ++. Viertens ist dies bereits geschehen - boost::any
dient diesem Zweck.
Es gibt andere elegante Möglichkeiten, eine Variable mit verschiedenen Typen zuzuweisen. Für Ihre aktuelle Frage können Sie dem Standardweg folgen wie,
%Vor%Oder nur für dieses Problem speziell,
%Vor%[Hinweis: Wenn Sie dies in Ihrer aktuellen Lösung tun,
%Vor%könnte die strenge Aliasing-Regel verletzen.]
Die Größe der Lücke unterscheidet sich von der Größe der int. Du kannst das nicht tun.
Tags und Links c