Autor
|
Tema: oerador de ambito :: o doble dos puntos (Leído 9,692 veces)
|
dewolo
Desconectado
Mensajes: 83
|
http://www.zator.com/Cpp/E4_9_19.htmhttp://www.hackingballz.com/herramientas/manual-oficial-de-php/language.oop5.paamayim-nekudotayim.htmlhola, mirando unos codigos mesurgio una duda sobre un operador que nunca me enseniaron completamente, es el doble dos puntos, por ejemplo en el compilador dentro del main si pongo "::" sale un cartel con algunas opciones, pero en otros codigos mas precisamente en codigos de clases personalizadas, he visto como se llaman a funciones de windows usando ese operador, quisiera saber para que se hace esto, nunca lo supe por ahi es algo tonto pero no me lo enseniaron Uploaded with ImageShack.usunos ejemplos que encontree bool CAppGetReso::OnInit() { //! Initialize all image handlers. ::wxInitAllImageHandlers();
//~ Initialize all XRC handlers. wxXmlResource::Get()->InitAllHandlers();
//~ Return true to continue processing. return(true); }
VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) { ::EnterCriticalSection(&lock); if(idEvent == pTimer) { KillTimer(NULL, pTimer); ResumeThread();
}
::LeaveCriticalSection(&lock); }
otro ejemplo class SimpleControl { public: SimpleControl (HWND hwndParent, int id) : _hWnd (GetDlgItem (hwndParent, id)) {}
void SetFocus () { ::SetFocus (_hWnd); }
// code is the HIWORD (wParam) static BOOL IsClicked (int code) { return code == BN_CLICKED; }
HWND Hwnd () const { return _hWnd; }
void Enable () { EnableWindow (_hWnd, TRUE); }
void Disable () { EnableWindow (_hWnd, FALSE); }
void SetFont (HFONT font) { SendMessage ( Hwnd (), WM_SETFONT, (WPARAM) font, MAKELPARAM(TRUE, 0)); } protected: HWND _hWnd; };
|
|
« Última modificación: 10 Octubre 2011, 03:16 am por dewolo »
|
En línea
|
|
|
|
LearningSpanishProgrammer
Desconectado
Mensajes: 67
|
Eso llama la función que está en global (public, unnamed) namespace Como las funciones del "stdio.h" y "stdlib.h" struct Test { int printf(const char *) { puts("Test::printf"); } void test() { printf("Ola!"); // class printf ::printf("Ola"); // global (stdio.h) } }; int main(int argc, char * argv[]) { Test t; t.test(); return 0; }
|
|
|
En línea
|
Estoy aprendiendo español, y tu estas aprendiendo programación
|
|
|
dewolo
Desconectado
Mensajes: 83
|
hay gracias amigo, si es tal cual como en el ejemplo, ya entendi para que es... pero mi pregunta seria la siguiente, porque no se le especifica el espacio de nombres o clase a la que pertenece, por ejemplo si fuera de la libreria estandar seria "std::xxxxx" pero en estos casos que te mostre a modo de ejemplo, solo usa el "::" , y otra cosa, en algunas clases como la del ejemplo 2, no tenes un metodo llamado "EnterCriticalSection", y sin embargo en otro metodo de esa clase se llama a esa api usando el "::", por eso, algunas dudas me quedaron ojala me las puedas aclarar. pero lo que mostraste lo entendi bien
|
|
|
En línea
|
|
|
|
LearningSpanishProgrammer
Desconectado
Mensajes: 67
|
Su duda es MUY buena, me gusta mucho cuando las personas tienen dudas tan buenas. imagine que tu usa la biblioteca XX que usa EnterCriticalSection "as free function", pero tu tambien usas YY que usa "myfunction::EnterCriticalSection" . Los dos funciones son globales, pero solo myfunction tienes un namespace. Se tu hacer um codigo usando "using namespace myfunction". ¿Cómo podría llamar la "función global"? O entonces, por esto tambien, poderia llamar, por inadvertencia, "myfunction::EnterCriticalSection" cuando en realidad querias "global EnterCriticalSection". Usar :: es una buena pratica #include <stdio.h> namespace ps { int printf(const char * p) { puts("ps::printf"); } } int main(int argc, char * argv[]) { ps::printf("ola"); ::printf("ola"); using namespace ps; printf("ola"); // Compilation error: which one?! ::printf("ola"); // Okay! return 0; }
|
|
|
En línea
|
Estoy aprendiendo español, y tu estas aprendiendo programación
|
|
|
dewolo
Desconectado
Mensajes: 83
|
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
perdida del ambito entre llamadas system()
PHP
|
tragantras
|
8
|
4,125
|
30 Junio 2010, 01:12 am
por tragantras
|
|
|
Windows 7 sigue por detrás de XP en el ámbito empresarial aunque recorta ...
Noticias
|
wolfbcn
|
0
|
1,451
|
23 Junio 2011, 01:30 am
por wolfbcn
|
|
|
no se declaro en este ambito [SOLUCIONADO]
Programación C/C++
|
anamnesis_92
|
3
|
8,993
|
21 Enero 2012, 20:36 pm
por Littlehorse
|
|
|
La informática, expulsada del ámbito de las ingenierías
« 1 2 »
Foro Libre
|
lipman
|
16
|
7,031
|
13 Abril 2013, 19:35 pm
por vodka
|
|
|
10 Tipos de Programadores que Encontrarás en el Ámbito
Programación General
|
Graphixx
|
3
|
2,893
|
14 Noviembre 2013, 14:29 pm
por xaps
|
|