Ich habe eine Klasse, die unäre überladen hat. Die Objekte dieses Typs wurden mit new
erstellt, daher war die Adresse der Variablen zugänglich, aber jetzt muss ich ein statisches Objekt verwenden. Ist es möglich, seine Adresse zu bekommen?C++ Adresse der Variablen ohne Operator erhalten
Antwort
Da C++ 11, können Sie die Funktion std::addressof
In C++ 11 oder höher verwenden, std::addressof(object)
, von den <memory>
Header deklariert.
Historisch gesehen war es grotesker, vor allem, wenn Sie mit den Qualifiern const
und volatile
richtig umgehen wollten. Eine Möglichkeit, die von Boost-Implementierung von addressof
ist
reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char &>(object)))
erste qualifers Zugabe während zu char&
Umwandlung, so dass reinterpret_cast
funktionieren würde, aber object
qualifiziert waren; dann entfernen sie, so dass die endgültige Umwandlung funktionieren würde; Dann nehme ich die Adresse und wandle diese in den richtigen Typ um. Solange T
dieselben Qualifikationsmerkmale wie object
hat (was als Vorlagenparameter von object
abgeleitet wird), wird der resultierende Zeiger korrekt qualifiziert.
- 1. IP-Adresse von DNS ohne GetHostByName erhalten
- 2. C++ WriteProcessMemory Ohne Variablen
- 3. Adresse ohne Adresse ändern
- 4. Wie funktioniert der C# -Operator?
- 5. Punkt auf Low-Byte-Adresse der Variablen in c
- 6. Die meisten portablen und zuverlässigen Weg, um die Adresse der Variablen in C++
- 7. Erhalten IP-Adresse der Besucher
- 8. IP-Adresse der NIC erhalten
- 9. Adresse der C++ - Vorlagenfunktion
- 10. Erhalten der lokalen IP-Adresse mit getaddrinfo() C-Funktion?
- 11. C++ Windows-Funktionsaufruf, der lokalen Hostnamen und IP-Adresse erhalten
- 12. C++: Erhalten Sie MAC-Adresse der Netzwerkadapter auf Vista?
- 13. C#: IP-Adresse von Domain Name erhalten?
- 14. Call-C-Adresse als Funktion ohne Prototyp
- 15. Kann C# nameof operator Referenzinstanzeigenschaft ohne Instanz?
- 16. lldb: Drucken der Adresse einer Variablen
- 17. Wie Wert der Variablen in Scala erhalten, wobei Name der Variablen als Zeichenkette erhalten wird
- 18. C++ ternary Operator Ausführungsbedingungen
- 19. Objective-C ist der Operator^
- 20. Erhalten der IP-Adresse der Domäne plus der Zurück-Serverinformationen
- 21. Wie Pfad der IP-Adresse erhalten
- 22. C# XOR auf zwei Byte-Variablen kompiliert nicht ohne Guss
- 23. Ternärer Operator ohne zweiten Operanden
- 24. C - Ändern der Basisadresse des Stacks Adresse
- 25. Erhalten Sie MAC-Adresse
- 26. Eigene IP-Adresse erhalten
- 27. Operator member_function_pointer_type() ohne typedef?
- 28. FizzBuzz ohne Operator UND
- 29. typedef und Operator C++
- 30. Overloaded << Operator Printing Adresse
Ist der * unary * 'Operator &' tatsächlich überlastet? –
@FredLarson Ich war überrascht, auch zu sehen: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Member_and_pointer_operators – KugBuBu
@KugBuBu: Ja, ich sah, dass es überlastet werden kann. Aber die Frage ist nicht explizit, welche tatsächlich in diesem Fall überlastet ist. Ich habe gesehen, Klassen überladen binäre 'Operator &' (sagen wir, für String-Verkettung). Es ist ungewöhnlich, den unären Operator zu überlasten. –