elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda de sintaxis..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda de sintaxis..  (Leído 2,005 veces)
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Duda de sintaxis..
« en: 11 Abril 2019, 16:58 pm »

Hola!

Entiendo que el operador de resolución de ámbito :: conecta un namespace con otro namespace o con una clase o con un método que esté dentro de un namespace específico... sin embargo, estoy viendo esto en Visual C++ y me asaltó la duda:

Código:
System::Windows::Forms::Application::Run(gcnew Prototipo::MyForm());

Entiendo que System es un namespace, pero que serían Windows, Forms, Application y Run en este caso?

No estoy seguro pero me da la idea de que desde System hasta Application son namespace y Run es una función...  pero quisiera estar seguro.

Gracias saludos.



En línea

Dungeons & dragons;
dragons.Attack();
srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Duda de sintaxis..
« Respuesta #1 en: 11 Abril 2019, 18:44 pm »

Run es un método estático que le pasas la instancia de un Form.

El namespace sería System.Windows y dentro hay declarada varias clases, entre ellas Application, encaminada al desarrollo de aplicaciones sin interfaz gráfica.

https://docs.microsoft.com/en-us/dotnet/api/system.windows?view=netframework-4.7.2

Y luego tendrías el namespace System.Windows.Forms encaminada al desarrollo de aplicaciones usando interfaz gráfica (usando Form). También contiene su clase Application.

https://docs.microsoft.com/es-es/dotnet/api/system.windows.forms?view=netframework-4.7.2


« Última modificación: 11 Abril 2019, 18:57 pm por srWhiteSkull » En línea

RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Duda de sintaxis..
« Respuesta #2 en: 11 Abril 2019, 19:47 pm »

Ojo, que eso no es C++. Es C++/CLI, que, a pesar de lo que el nombre pueda dar a entender, es otro lenguaje diferente, creado por Microsoft, para .NET, y como con todos los lenguajes de esa plataforma, el código generado es no nativo (aunque se puede mezclar C++/CLI con C++ nativo), y la memoria la maneja el garbage collector  :-\. En resumen, es un lenguaje .NET, como C# y VB.NET, que se parece mucho a C++, y nada más.
En línea

digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Duda de sintaxis..
« Respuesta #3 en: 12 Abril 2019, 15:38 pm »

Gracias por las aclaraciones

Si, me he dado cuenta que es un tipo manejado de cpp.

Entonces Application es una clase, pero, porque se llama a la función estática Run() de esa forma?

Application::Run();

Pense que los métodos se llamaban solo de dos formas:

Appication.Run()

o

Application->Run();

En línea

Dungeons & dragons;
dragons.Attack();
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Duda de sintaxis..
« Respuesta #4 en: 13 Abril 2019, 06:13 am »

Creo entender, ustedes me corrigen...

tendría que llamar a una función con el punto si esta siendo referenciada  por una variable común y corriente..

o con el operador -> si fuera referenciada por un puntero..
pero Run() al ser estatica, no existe una instancia a ella, por eso no se usa ni punto ni ->, directamente el operador ::

Código:

namespace Stuffs{

     class UnaCosa{

          static bool getTrue() const {
               return true;
          }
     };
}

int main (){


     bool unaExpresion = Stuffs::UnaCosa::getTrue();
     
     //una instancia a UnaCosa
     Stuffs::UnaCosa unaCosa;
     unaCosa.getTrue();         //Esto deberia dar error verdad?

     //puntero
     Stuffs::UnaCosa * p_unaCosa = new Stuffs::UnaCosa;
     p_unaCosa->getTrue();   //Esto tambien deberia dar error, si?

}



saludos y gracias.
En línea

Dungeons & dragons;
dragons.Attack();
Loretz

Desconectado Desconectado

Mensajes: 117


Ver Perfil
Re: Duda de sintaxis..
« Respuesta #5 en: 13 Abril 2019, 19:34 pm »

No puedo decirte cómo son las reglas del C++/CLI, que ignoro olímpicamente, pero te comento para el C++ (sobreescribo tu ejemplo):

Código
  1. namespace Stuffs {
  2.    class UnaCosa {
  3.    public: ///< En C++ getTrue debe ser public para que pueda ser accedida desde fuera.
  4.        static bool getTrue() /*const*/ {  ///< En C++ una funcion miembro static no puede tener calificador de tipo
  5.            return true;
  6.        }
  7.    };
  8. }
  9.  
  10. int main() {
  11.    bool unaExpresion = Stuffs::UnaCosa::getTrue();
  12.  
  13.    //una instancia a UnaCosa
  14.    Stuffs::UnaCosa unaCosa;
  15.    unaCosa.getTrue();     //Esto deberia dar error verdad?
  16.                           ///< En C++ es una expresion valida, equivalente a Stuffs::UnaCosa::getTrue();
  17.  
  18.    //puntero
  19.    Stuffs::UnaCosa* p_unaCosa = new Stuffs::UnaCosa;
  20.    p_unaCosa->getTrue();   //Esto tambien deberia dar error, si?
  21.                            ///< En C++ es una expresion valida, equivalente a Stuffs::UnaCosa::getTrue();
  22. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con un par de elementos de la sintaxis.
PHP
ZHOSS-9 2 1,769 Último mensaje 22 Diciembre 2011, 00:45 am
por ZHOSS-9
Duda en sintaxis de C
Programación C/C++
the_jocker 8 3,788 Último mensaje 5 Abril 2012, 03:21 am
por farresito
Duda python (error de sintaxis)
Scripting
amchacon 5 4,140 Último mensaje 1 Julio 2013, 20:16 pm
por tincopasan
[DUDA]Transformar Sintaxis Oracle SQL a MySQL
Bases de Datos
blackyer94 2 2,672 Último mensaje 16 Abril 2015, 21:09 pm
por fran800m
Duda con la sintaxis en C (usando code::blocks) -- solucionado, gracias;
Programación C/C++
Naslednik 7 3,520 Último mensaje 20 Abril 2015, 00:23 am
por Naslednik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines