Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - digimikeh

#111
Código (cpp) [Seleccionar]


struct Constants{

       static const char * DB_FILE_NAME;
       static const char * DB_FULL_PATH;
       static const char * DB_FULL_PATH_NAME;

       ~Constants();

   };

   //Aqui esta lo nuevo:
   const char * Constants::DB_FILE_NAME = "data.db";
   const char * Constants::DB_FULL_PATH = "./";
   const char * Constants::DB_FULL_PATH_NAME = "./data.db";

   Constants::~Constants(){
       delete DB_FILE_NAME;
       delete DB_FULL_PATH;
       delete DB_FULL_PATH_NAME;
   }



Ya vi, mi error era que estaba inicializando mal, cuando los miembros son static, debo hacerlo de la forma en las lineas 13, 14 y 15.  Parece ser que la definición de los miembros estáticos es levemente diferente a la de un miembro común y corriente, porque he necesitado colocar las palabras "const char *" nuevamente, como si las estuviera declarando.

Lo otro que me di cuenta es que no he necesitado solicitar memoria dinámica (no he probado aun, puede que mi aplicación se cierre), lo cual me parece extraño, tenia entendido que todos los punteros deben solicitar memoria dinámica..  C++ es como una nena.  ;D
#112
Tienes razón, se me había pasado eso de solicitar memoria ...  gracias..

El error lo he visto mas en OSX..
#113
Hola!

Estoy trabajando con QT Creator y tengo el siguiente código:

Código (cpp) [Seleccionar]

    struct Constants{

        static const char * DB_FILE_NAME;
        static const char * DB_FULL_PATH;
        static const char * DB_FULL_PATH_NAME;

        Constants();
        ~Constants();

    };

    Constants::Constants(){
        DB_FILE_NAME = "data.db";
        DB_FULL_PATH = "./";
        DB_FULL_PATH_NAME = "./data.db";
    }

    Constants::~Constants(){
        delete DB_FILE_NAME;
        delete DB_FULL_PATH;
        delete DB_FULL_PATH_NAME;
    }




Sin embargo, al compilar, me dice :


symbol(s) not found for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)


Definí los valores de las constantes estéticas fuera del structs debido a que tenia entendido que nunca se hacen en la misma declaración... a que puede deberse este error?

gracias.
#114
Hombre, gracias por las explicaciones. :D
#115
Se ve un tanto complejo pero voy entendiendo.

Bajo que circunstancias se puede usar puntero a función y método miembro?

Gracias
#116
Ok, entiendo!..gracias..
Entonces las funciones también estarían ocupando un espacio en la memoria?
#117
Hola!..

Estoy practicando Unreal y QT Creator, en ambos he visto esta sintaxis:


Código (cpp) [Seleccionar]


void unaFuncionCualquiera(){

    unaClase.unMetodo(&ClaseA::unaFuncionB);  //este argumento..

}


void ClaseA::unaFuncionB(){
    //hacer algo
}


En Unreal se manipulan los controles de esta forma.
En QT se conecta un botón con una función...

Entiendo el efecto que tiene, pero que tipo de parámetro es?,, como se denomina este tipo de parámetros?



Saludos y gracias.
#118
Programación C/C++ / Re: Menu en C++
17 Abril 2019, 04:26 AM
Código (cpp) [Seleccionar]


#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include <stdio.h>
using namespace std;


int main(){
   while(1){
   
      int n, sumaP=0, sumaI=0, sumaM=0, opcion;
   
     cout<<"Digite un numero"<<endl;cin>>n;
     cout << "\t1 .Suma de Pares " << endl;
     cout<<"\t2 .Suma de Impares "<<endl;
     cout<<"\t3 .Suma de Multiplos de 5 "<<endl;

     /*cout<<"\t5. Retroceder"<<endl;*/
 
     cout<<"\t4 .Salir\nOpcion :"<<endl;
     cin>>opcion;
   
     for (int i=1; i<=n;i++){
   
   
         switch (opcion){
         
         case 1 :
                system("cls");
                if (i %2==0 ){
   
                    sumaP=sumaP+i;
                    cout<<"La suma de pares es: "<<sumaP<<endl;
     
                }
                break;
         case 2 :
                 system("cls");
                 if (i%3==0){
                      sumaI=sumaI + i;
                      cout<<"La suma de impares es: "<<sumaI<<endl;

                 }
       
                 break;
       
          case 3 :
                 system("cls");
                 if (i%5==0){
                      sumaM=sumaM + i;
                      cout<<"La suma de multiplos de 5 es: "<<sumaM<<endl;
   
                 }
                 break;
   
          case 4:
                 cout<<"Salir\n";
                 exit(0);
     }
   
     cout<<("Presione un tecla para regresar al Menu Principal.\n");
     getch();
   }


return 0;

}




Hola, con la sintaxis es mas fácil que puedan ayudarte..
#119
Programación C/C++ / Re: Duda de sintaxis..
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 ::



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.
#120
Programación C/C++ / Re: Duda de sintaxis..
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();