Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"PCShadow"«
Zitat von »"Spiri"«
Von der EMP
EMP = Elektromagnetischer Puls
jetz frag mich bitte nicht, warum man Puls und nicht Impuls sagt, oder warum sich das Magazin, das du vermutlich meinst, nach einem benannt hat
Anonymous
unregistriert
Zitat
ich habe das mal bei www.cplusplus.de gefunde.
Anonymous
unregistriert
Zitat von »"Coders-Square"«
Zitat
ich habe das mal bei www.cplusplus.de gefunde.
Haste bestimmt in deinem eigenen Post gefunden wa...
Ja, da stimme ich dir auch zu. Wenn man lieber Präfixe hat oder ganze Namensräume ausleert, soll man das machen, ist ja auch Geschmackssache. Halt einfach nicht in Header, die andere brauchen. Ich wollte nur zeigen, dass man mit Namensräumen noch einige Möglichkeiten mehr hat als mit einfachen Präfixen.Zitat von »"Helmut"«
Gut, ich habe etwas übertrieben, aber ich muss hier mal Hanse zustimmen. Man sollte genau das machen, was einem effektiv erscheint, auch wenn die allgemeine Meinung ist, dass das schlechter Stil ist. Wenn man nicht selber gemerkt hat, dass eine gewissen Vorgehensweise auch langfristig keine Nachteile bringt, sollte man es ruhig tun.
ADNL = argument dependent name lookup (manchmal auch ADL oder Koenig Lookup). Das sagt aus, dass bei Funktionsaufrufen auch in den Namensräumen der Parameter nach Bezeichnern gesucht wird.Zitat von »"Helmut"«
@Nexus
Sorry, aber ich hab keine Ahnung was ADNL ist (Google auch nicht) und dein Beispiel versteh ich auch nicht.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
#include <fstream> #include <string> int main() { std::string Text; std::fstream Stream; getline(Stream, Text); // hier kein std::getline mehr, da erkannt wird, dass // die Parametertypen im Namensraum std sind. } |
Naja, das Dropdown-Feld ist eigentlich nicht der Hauptgrund für Namespaces.Zitat von »"Helmut"«
Aber using namespace bricht nicht das Konzept, Mehrdeutigkeiten werden immer noch erkannt und man kann den Namespace immer noch explizit angeben, um ein Dropdown Feld zu bekommen.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <algorithm> using namespace std; // swap spezifisch für Zeiger template <typename T> void swap(T* left, T* right) { cout << "Dumme Funktion." << endl; } int main() { int* a = 0; int* b = 0; swap(a, b); // Es wird die dumme Funktion aufgerufen. Keine Warnung, kein Fehler. } |
Meinst du jetzt das swap-Template in meinem letzten Post oder das im vorletzten?Zitat von »"Helmut"«
Aber das Prinzip deines Beispiels versteh ich immer noch nicht. Die Tatsache, dass es using benutzt, keinerlei Fehler produziert und funktioniert, wie man es erwartet, spricht doch für mich, nicht für dich? (habs compiliert, funzt einwandfrei)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
using namespace std; using namespace xyz; int main() { int* ptr1 = ...; int* ptr2 = ...; swap(ptr1, ptr2); } |
Werbeanzeige