Würde der allwissende Herr vieleicht auch erklären warum das ein schlechter Tipp ist ?
Ich hab das immer so "gelernt", wenn ich da was falsch verstanden habe tut es mir leid dies gepostet zu haben.
Eine Erklärung wäre nett und hilfreich
// gelernt in Anführungszeichen weil ich nie richtig Programmieren gelernt habe sondern nur ein paar basics im Internet aufgegriffen habe und helfen wollte
#include <iostream>
namespace n {
struct s {};
void f (s) { std::cout << "n::foo(n::s)\n"; }
void f (const s *) { std::cout << "n::foo(const n::s *)\n"; }
}
void f (int) { std::cout << "foo(int)\n"; }
template <typename T>
void f (T) { std::cout << "foo(T)\n"; }
template <typename T>
void f (T *) { std::cout << "foo(T*)\n"; }
void f (const n::s *) { std::cout << "foo(const n::s *)\n"; }
int main () {
using n::s;
s obj;
f (1); // f(int)
// Funktionen werden Templatefunktionen vorgezogen.
f <int> (1); // f(T) mit T=int
// Es kann nur eine Templatefunktion sein.
f (1.f); // f(T) mit T=float
// Templatefunktionen werden Funktionen vorgezogen,
// wo eine Konvertierung notwendig ist, und sei es ein fehlendes const.
f (& obj); // f(T*) mit T=n::s
// Es kommen f<n*>(n*) und f<n>(n*) in die nähere Auwahl.
// Da letztere Templatefunktion spezieller ist, wird sie gewählt.
f (obj); // n::f(n::s)
// "Argument dependent name lookup" (ADL): Es werden alle Funktionen in
// den Namensräumen aller Argumente ebenfalls in Betracht gezogen.
// Hier ist das der Namensraum "n".
//f (const_cast <const s *> (& obj)); // Fehler
// Es kommen "f(const s*)" und "n::f(const s*)" in Frage.
// Keine wird vorgezogen, also kommt es zu einem Fehler.
std::cin.get ();
}
Es gibt dann noch einige weitere Möglichkeiten (z. B. das "Verdecken" von Namen), aber das würde hier zu weit führen.
Habe ich doch tatsächlich vergessen, die Wirkung zu beschreiben...
Eine using-Direktive führt alle Bezeichner eines Namensraumes in den aktuellen Gültigkeitsbereich ein. Dadurch kann es zu Konflikten und unerwarteten Ergebnissen kommen, siehe mein Beispiel oben, vor allem, wenn unbekannt ist, was alles in dem Namensraum ist.
Eine using-Deklaration führt genau einen Bezeichner in den aktuellen Gültigkeitsbereich ein. Prinzipiell besteht das gleiche Problem, nur weiß man ja, welche Bezeichner so eingeführt wurden.
[TuT]Visual Basic 2010 Express 07/01/2013 - Alliance of Valiant Arms - 4 Replies Hey Com.
Könntet Ihr Vllt Hier in den Thread "TuT's" für Visual Basic Posten ?
Damit ich einen Neuen free Hack Für AvA erstellen kann ?
Danke ;) !
[FRAGE] Microsoft Virsual Basic 2011 Express oder Visual C++ 2010 Express??? 07/16/2011 - .NET Languages - 1 Replies Microsoft Virsual Basic 2011 Express oder Visual C++ 2010 Express ???
also die Begründung sollte nicht am schwierigkeitsgrad liegen. ich wollte wissen welches programm sinnvoller ist bzw. ob es ein besseres gibt. das lernen bekomme ich noch hin :)
[HELP]Visual c# express edition 11/30/2009 - CO2 Private Server - 8 Replies Hi
Ive downloaded express edition 2005 2008 and 2010,all because my debugger button wont work,its like faded out and you cannot click the build buttons either.
Im trying to compile .cs files for a 5165 server,can anyone help?
[Windows7] visual c++ 08 express err 09/06/2009 - Technical Support - 4 Replies hallou :-),
ich wollte heute mal was in c++ programmieren und habe mir vc++ 08 express gezogen. ich wollte mal meine detours skills unter beweis stellen. bekomme so ca 120fehler. dann habe ich versucht ein prog zu coden was einfach hallo in einer console schreiben soll. cout kann nicht gefunden werden. er findet nicht eine header datei.. woran liegt das bzw wie kann ich das beheben?