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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20
81  Programación / Programación C/C++ / Re: El mecanismo de static_assert(); en: 16 Junio 2019, 00:56 am
Gracias por la respuesta...
Entiendo todo lo que has puesto, pero no me había enfocado a eso amigo, sino al comportamiento de MSVS 2017, que me corregía al vuelo el problema que había cuando static_assert() estaba detectando...  esto claramente no es tiempo de compilación, por eso puse "Edito" mas abajo, porque me di cuenta que es una característica de MS y no de GCC (por ejemplo)..

Saludos.
82  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...
83  Programación / Programación C/C++ / Re: constexpr .. alguna analogia que lo explique mas facil ? en: 15 Junio 2019, 19:11 pm
1500 dólares... mas los pasajes....
prefiero verme un tutorial o ver diferida la presentación y hacer el sándwich en casa  :silbar: :xD
84  Programación / Programación C/C++ / Re: constexpr .. alguna analogia que lo explique mas facil ? en: 10 Junio 2019, 05:18 am
Que curioso, hice varias pruebas con funciones usando constexpr retornando una variable y siempre me marco error, pero si las cambiaba por literales, entonces funcionaban...


Y ahora que intento recrear la escena, funcionan retornando una variable..

:-\
Una consulta respecto al ultimo trozo de código...
En la línea 11, tienes int x;, pero no esta inicializado, que valor se le pasara a la función ?

saludos y gracias.



Ah!!.. ya vi el por que, pasa que en C++11 las funciones constexpr solo pueden retornar valores (o expresiones) constantes, no variables...

Sin embargo, como bien dices, la versión C++14 si lo puede hacer... debio ser un update del lenguaje...  es que el libro que estoy siguiendo es la versión 11..y precisamente esta usando la version 11 del compilador.

Ya me tenia sin cabello la duda...
Saludos..
85  Programación / Programación C/C++ / Re: constexpr .. alguna analogia que lo explique mas facil ? en: 10 Junio 2019, 00:26 am
aha… veo que son caprichos del comitee  >:(

Lo que acabas de decir sobre int (como un constante por defecto) me hace bastante sentido quizá por eso la exclusión..

Bueno, y que opinas de lo que pienso sobre las funciones que retornan un tipo que tiene constexpr ?..

Gracias.
86  Programación / Programación C/C++ / Re: constexpr .. alguna analogia que lo explique mas facil ? en: 9 Junio 2019, 21:46 pm
No se si me ha quedado mas o menos claro pero lo que acabo de captar es lo siguiente:

1) Las funciones declaradas como constexpr solo van a retornar literales constantes, ej:

Código
  1.     return (a + b);
  2.     return 5 * 8;
  3.     return (580 * a + (b / 2));
  4.  
  5.  

y nunca variables:

Código
  1.     int v = (a + b);
  2.     return v;  
  3.  
  4.     float x = (580 * a + (b / 2));
  5.     return x;
  6.  
  7.  
           

Vi otra cosa respecto a constexpr respecto a int vs double y float..

Código
  1.  
  2. //esto no da problemas:
  3. const int ix = 7;
  4. constexpr double dx = 520.5 * ix;
  5.  
  6. //pero esto si los da:
  7. const float fx = 7;
  8. constexpr double dx = 520.5 * fx;
  9.  
  10. //esto tambien da problemas:
  11. const double dx1 = 7;
  12. constexpr double dx2 = 520.5 * dx1;
  13.  
  14.  

El compilador dice que ni const float fx, ni const double dx1 son utilizables como constexpr.  en cambio estoy forzado a lo siguiente para que funcione:

Código
  1.  
  2. constexpr float fx = 7.5f;                
  3. constexpr double dx = 520.5 * fx;
  4.  
  5.  

Es decir, en los casos de los tipos double y float, no debo usar const, sino constexpr..

La gran pregunta, por que ?

Salud! y gracias.



 
87  Programación / Programación C/C++ / Re: constexpr .. alguna analogia que lo explique mas facil ? en: 9 Junio 2019, 19:43 pm
 >:D No se quien fue el responsable que me dio el dato del libro  :silbar:


De lo que he visto hasta ahora también se usa con las plantillas...
vamos a ver que tal la sección donde lo aclara con mas detalles...
y por cierto, gracias por la explicacion.
88  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..
89  Programación / Programación General / Re: Patron MVC duda de implementación... en: 20 Mayo 2019, 18:43 pm
Ok, entonces la función rellenarTabla() en realidad no estaría bien verdad?, tendría que desglosarla.... ya que estaría mezclando dos capas en una sola función..

podría desglosarla así?:

Vista:
Código
  1.  
  2. //Incluyo la cabecera que manipula el controlador
  3. #include "Manager.h"
  4.  
  5. //suponiendo que tengo una variable que represente a la tabla y se llame
  6. //tbl_data
  7. void UMasterWindow::mostrarTabla(){
  8.     Controller::Manager manager;
  9.  
  10.     ui->tbl_data = manager.controlarTabla(tbl_data, "Usuarios");
  11.     ui->tbl_data->show();
  12. }
  13.  
  14.  
  15.  

Controlador:
Código
  1. //Incluyo la cabecera que manipula la visual de la tabla...
  2. #include "QTableView.h"
  3. #include "SQLManagement.h"
  4. #include "UMasterWindow.h"
  5.  
  6. QTableView Manager::controlarTabla(QTableView tbl_data, QString tbl_name){
  7.     Model::SQLManagement sqlM;
  8.  
  9.     QString queryCmd;
  10.     queryCmd = "SELECT * from " + tbl_name;
  11.     return sqlM.rellenarTabla(tbl_data, queryCmd);
  12.  
  13. }
  14.  

//Modelo:
Código
  1. #include "Manager.h"
  2. #include "QTableView.h"
  3.  
  4. QSqlQueryModel * model = nullptr;
  5.  
  6. QTableView SQLManagement::rellenarTabla(QTableView tbl_data, QString queryCmd){
  7.     model = new QSqlQueryModel;
  8.     QSqlQuery query;
  9.     query.exec(queryCmd);
  10.  
  11.     model->setQuery(queryCmd);
  12.     tbl_data->setModel(model);
  13.     cerrarBD();
  14.  
  15.     return tbl_data;
  16.  
  17. }
  18.  
  19. void SQLManagement::cerrarBD(){
  20.     delete db;
  21.     db = nullptr;
  22. }
  23.  
  24.  

Es asi como lo imagino, no se si estará bien... 
Me recomiendan un buen curso de MVC?.. necesito ver en la practica con el código como funciona, porque el ejemplo que acabo de poner me parece una espagueti...

Saludos y gracias!
90  Programación / Programación C/C++ / Re: Sobrecarga de operador en: 18 Mayo 2019, 02:21 am
Gracias por las respuestas..

me queda claro todo, lo único si que no comprendí bien el por qué de dos cosas

por qué dices que no debo usar system("cls"); de que otra forma puedo limpiar pantalla?..  (conozco otro método que es insertar 100 lineas vacías pero esto haría que el contenido se muestre abajo)

y lo otro, es el std::endl;  la otra forma que conozco es con la secuencia de escape \n

Saludos!
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines