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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: 1 2 3 [4] 5 6 7
31  Programación / Programación C/C++ / Sobrecarga de operador y constructores/destructores en: 17 Junio 2019, 04:54 am
Hola..

haciendo algunos ensayos, me he encontrado con una sorpresa, cuando intento utilizar algún operador sobrecargado con un tipo propio, se ejecuta el constructor y el destructor al instante.... ej:

Código
  1.  
  2. struct x{
  3.  
  4. private:
  5.     int a;
  6.  
  7. public:
  8.     x(){ std::cout << "Constructor ejecutado."; }
  9.     ~x() { std::cout << "Deconstructor ejecutado."; }
  10.     inline void setA(const int _a){ this->a = _a; }
  11.     inline int getA() const { return this->a; }
  12. }
  13.  
  14. std::ostream operator <<(std::ostream & _os, const x _x){
  15.     _os << _x.getA();
  16.     return _os;
  17. }
  18.  
  19.  
  20.  
  21. int main(){
  22.  
  23.     x typeX;    //Constructor llamado como es usual..
  24.     std::cout << x;     //Constructor y deconstructor llamados, por que?
  25.  
  26. }
  27.  
  28.  
  29.  
32  Programación / Programación C/C++ / El mecanismo de static_assert(); en: 15 Junio 2019, 19:20 pm
Hola !

He llegado al punto de practicar el static_assert(), entiendo ya como funciona y a que se refiere, seria basicamente una afirmacion a la fuerza y evaluada luego, si es falsa entonoces habra un error, si es verdadera, continuara con el programa.

Lo que entiendo (a diferencia de assert()) es que static_assert evalua en tiempo de compilacion, aqui esto no lo entiendo bien, a que se refiere con tiempo de compilacion ?....  mientras escribes el codigo o cuando haces el build?  Si si, entiendo que esta pregunta es absurda, se supone que tiempo de compilacion es cuando haces build, pero lo pregunto por lo siguiente:

Resulta que estoy en Visual Studio 2017, al escribir:

Código
  1.  
  2. int main (){
  3.     static_assert(sizeof(int) == 4, "Su sistema no es de 64bits");
  4.     std::cout << "64 bits.";
  5.  
  6. }
  7.  

No me va ningun error, es decir, todo bien... pero si le cambio el valor 4 por 5, o por cualquier otro, de inmediato VS me lanza un error, y la descripcion del error es justamente el segundo argumento "Su sistema no es de 64bits", esto quiere decir que static_assert esta evaluando mientras escribo el codigo, no cuando hago build..


Esto definitivamente no puede ser ni tiempo de ejecucion, ni tiempo de compilacion, como le podriamos llamar??..


Editado:
Parece que es el compilador de Microsoft el que hace esta verificacion en el tiempo de edicion, GCC parece no tenerla, no sale el error hasta que le doy build...  entonces SI que es en tiempo de compilacion, pero el compilador de MS te ahorra un poco mas de tiempo mostrandote mientras escribes...
33  Programación / Programación C/C++ / constexpr .. alguna analogia que lo explique mas facil ? en: 9 Junio 2019, 17:59 pm
Hola!

"spam"
Por sugerencia de un usuario del foro me he comprado el libro "The C++ Programming Language 4th Edition - Bjarne Strouptup",
"/spam"  (perdón  :laugh:) entonoces he llegado a una parte que empieza a hablar sobre constexpr,  pero aun no entiendo bien su funcionamiento, es decir, es lógico que quiere decir que se pueden crear expresiones constantes, pero no le veo mayor diferencia con la palabra reservada const al menos por ahora....

Lo que llegue a comprender solamente es que no puedo asignarle valores no-constantes a una expresión constante.....  estoy seguro que es constexpr es algo muy muy útil...  alguna luz del para que sirve?

Gracias..
34  Programación / Programación C/C++ / Sobrecarga de operador en: 15 Mayo 2019, 15:54 pm
Hola amigos..

Estoy experimentando con el contenedor set y tengo duda con el operador de sobrecarga que se necesita para meter al contenedor un tipo creado por mi mismo...

Según estuve leyendo y alguien me dijo también que necesito sobrecargar el operador <

Pero este operador menor que, en que forma hace la comparación de elementos?, el contenedor set no permite objetos duplicados, no seria mas lógico sobrecargar == en vez de < para comparar si el elemento ya existe?


35  Programación / Programación General / Patron MVC duda de implementación... en: 14 Mayo 2019, 01:41 am
Hola..

Tengo una duda con el patron de diseño MVC:

Entiendo que todo lo que se refiere a la visual esta en V (View)
Y todo lo que corresponda a la lógica está en C (Controller)
Lo que pertenece a base de datos en M (Model)

Pero no me imagino como pueda organizarse todo esto, aun no entiendo como se separa.. por ejemplo, un botón es una mezcla de V y C, porque no solo es algo visual sino que ejecuta una función, es decir es programación y visual... a menos que la programación de los botones no entre en la capa de Controller...  si es así, qué entra en esta capa?..

Saludos y gracias.
36  Programación / Programación C/C++ / Operador de seleccion -> en variable no puntero.. en: 13 Mayo 2019, 04:33 am
Hola

Me he topado con algo que no había visto antes.. es lo siguiente;

Código
  1. auto director = Director::getInstance();
  2. auto glview = director->getOpenGLView();
  3.  

director no es puntero, porque entonces utiliza el operador -> ?

Gracias
Saludos
37  Programación / Programación C/C++ / Respecto a la pila o memoria estatica..(o stack) en: 3 Mayo 2019, 16:43 pm
buen dia..

Todo este tiempo me he imaginado la memoria de un computador tal como se llama : RAM Random Access Memory, ya saben, de acceso aleatorio, pero al tratar de entender que es el Stack, me ha confundido un poco este concepto con la RAM..

Stack para mi es algo ordenado, que vaya en forma secuencial o en serie ocupando un espacio, tal como lo es una pila, no?.

Tengo dos esquemas aqui:

I.- Asignacion en forma ordenada:
Cuando se ejecuta el programa, el sistema va asignando memoria a cada variable segun vaya leyendo el programa y la va ordenando en una pila.




II.- Asignacion en forma aleatoria:
Cuando se ejecuta el programa, el sistema va asignando aleatoriamente cada variable en un area de memoria para el uso del programa.



Cual seria el correcto?

Gracias y saludos.

38  Programación / Programación C/C++ / Representación visual de punteros y punteros a punteros.. en: 2 Mayo 2019, 17:48 pm
Muy buenas..

Entiendo como funcionan los punteros y los punteros a punteros (según el dibujo adjunto que he realizado, si hay algo malo, corregidme por favor)..



Pero como quedaría dibujada el siguiente puntero doble?

Código
  1. int ** matriz = new int[10][10];
  2.  

Es un puntero a un puntero, pero almacena una matriz bidimensional, no logro visualizar como sería el mapa en la memoria... como seria?

Gracias.
Saludos..
39  Programación / Programación C/C++ / como evitar el error de linker : Duplicated symbol for Architecture x86? en: 28 Abril 2019, 00:19 am

Hola!

Tengo 4 archivos:

udbmanagement.hpp
uloginwindow.h
main.cpp
uloginwindow.cpp


main.cpp está incluyendo a "udbmanagement.hpp"
loginwindow.cpp también incluye esta misma cabecera "udbmanagement.hpp"

Sin embargo, al compilar, me envía ese error del linker, símbolos duplicados, los símbolos duplicados son 4 funciones que están dentro del archivo .hpp

El problema es que utilizo esas funciones tanto en main, como en uloginwindow.cpp

que debería hacer en este caso?..

(he probado con #pragma once pero sigo teniendo el mismo error.)

en el archivo .hpp tengo 2 structs cada una tiene algunas funciones, y esta todo definido dentro del mismo .hpp .. quizá sea mejor idea separarlos en .h y .cpp ...

Alguna idea?..
Saludos y gracias...
40  Programación / Programación C/C++ / Símbolos no encontrados para arquitectura x86/x64 en: 23 Abril 2019, 19:28 pm
Hola!

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

Código
  1.    struct Constants{
  2.  
  3.        static const char * DB_FILE_NAME;
  4.        static const char * DB_FULL_PATH;
  5.        static const char * DB_FULL_PATH_NAME;
  6.  
  7.        Constants();
  8.        ~Constants();
  9.  
  10.    };
  11.  
  12.    Constants::Constants(){
  13.        DB_FILE_NAME = "data.db";
  14.        DB_FULL_PATH = "./";
  15.        DB_FULL_PATH_NAME = "./data.db";
  16.    }
  17.  
  18.    Constants::~Constants(){
  19.        delete DB_FILE_NAME;
  20.        delete DB_FULL_PATH;
  21.        delete DB_FULL_PATH_NAME;
  22.    }
  23.  
  24.  
  25.  

Sin embargo, al compilar, me dice :

Código:
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.
Páginas: 1 2 3 [4] 5 6 7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines