21 views
Skip to first unread message

ari lowy

unread,
Nov 9, 2020, 8:56:56 AM11/9/20
to tallerdepr...@googlegroups.com
Buenas!! estoy teniendo problemas con cppcheck. Me dice que los parámetros que debería recibir una función deberían ser const, pero dentro de esa función cambian. Al punto de que si los pongo como const, salta el compilador.
Adjunto imágenes del sercom y del codigo.

La función (*method)(resources, answer) es get() o post(). tanto get como post modifican answer y post puede modificar resources.

Como lo debería armar para que lo acepte cppcheck y poder ver como andan los casos de prueba del sercom?

Captura de pantalla de 2020-11-09 10-32-30.png
Captura de pantalla de 2020-11-09 10-33-01.png

Ezequiel Werner

unread,
Nov 9, 2020, 9:12:44 AM11/9/20
to tallerdepr...@googlegroups.com
Method es un puntero a función? Para qué punteros a función en C++ teniendo functors?

--
Has recibido este mensaje porque estás suscrito al grupo "7542 - Taller de Programación" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tallerdeprograma...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/tallerdeprogramacion/CAP%3DRFvz3wZHRUUDWcASFTY8D-mu_vhsscbcdoObbB%3D42QMFqDQ%40mail.gmail.com.

ari lowy

unread,
Nov 9, 2020, 9:21:00 AM11/9/20
to tallerdepr...@googlegroups.com
Hola eze! Method es un functor. Estoy usando herencia: una clase method() de la que herencia methodGet() y methodPost(). 
Según cual sea defino:
method = new methodGet() o method = new methodPost().

Entiendo que eso se hace con punteros.

ari lowy

unread,
Nov 9, 2020, 9:21:57 AM11/9/20
to tallerdepr...@googlegroups.com
Hola eze! Method es un functor. Estoy usando herencia: una clase Method() de la que heredan MethodGet() y MethodPost(). 
Según cual sea defino:
method = new MethodGet() o method = new MethodPost().

Entiendo que eso se hace con punteros.
El lun., 9 nov. 2020 a las 11:12, Ezequiel Werner (<eze...@gmail.com>) escribió:

Ezequiel Werner

unread,
Nov 9, 2020, 11:22:29 AM11/9/20
to tallerdepr...@googlegroups.com
Si es un falso positivo suprimi el warning y poné un comentario 

ari lowy

unread,
Nov 9, 2020, 2:11:24 PM11/9/20
to tallerdepr...@googlegroups.com
Si, ahí lo estoy charlando con Fede también. Leí la documentación de suppression cppcheck e intente de todo. Estoy pasando imagen de la opcion mas logica que se me ocurrió.

Pero no estoy logrando que cppcheck corra bien. Fede me dijo que se corre con el comando cppcheck --inline -suppr <archivo.cpp> asique tampoco es eso.

Ya no se que hacer Eze. Hay posibilidad de poder correr los casos de prueba en el SERCOM aunque no termine de andar cppcheck? 
Ya estuve medio día trabado con esto.

Captura de pantalla de 2020-11-09 15-43-06.png

Ezequiel Werner

unread,
Nov 9, 2020, 2:17:05 PM11/9/20
to tallerdepr...@googlegroups.com
El warning te lo tira en la firma de run, la supression la tenés que poner en esa línea, no en la llamada a *method

Ezequiel Werner

unread,
Nov 9, 2020, 2:26:37 PM11/9/20
to tallerdepr...@googlegroups.com
Me bajé tu código y lo primero que vi fue que estás tratando de overridear un operador. Eso no se puede hacer en C++. Podrías hacer algo del estilo
class Base {
  void operator() (parametros) {
    call(parametros);
  }
  virtual void call(parametros) = 0;
};
y extender call en vez del operator.

Ezequiel Werner

unread,
Nov 9, 2020, 2:31:54 PM11/9/20
to tallerdepr...@googlegroups.com
Si aún así no te anda, cambiá esa llamada a (*method)(resources, res, answer) por method->operator()(resources, res, answer);. Es más feo pero cppcheck se va a avivar

ari lowy

unread,
Nov 9, 2020, 2:42:00 PM11/9/20
to tallerdepr...@googlegroups.com
Si!!!!!! ahí anduvo eze. Lo pude solucionar haciendo el supression donde me dijiste. Igual ahí miro como resolver lo del operador. Muchas gracias!!!

Reply all
Reply to author
Forward
0 new messages