Enviado em 10/12/2022 - 11:42h
Olá, eu tava usando std::function passado como argumento dentro de uma classe e ai aconteceu bugs horríveis que são simplesmente impossossíveis de saber o porquê ocorreu.
Por exemplo:
É mais ou menos assim a classe que armazena o callback. Acontece que o seguinte: se eu crio a variável do tipo A dentro de outra classe qualquer, e armazeno o A num std::vector, o programa simplesmente fecha com falha de segmentação. Vou ao gdb e não tem nada cara, só mostra uns '??'. Mas se eu removo o código onde tá adicionando o A, ele funciona normalmente. Também funciona se eu transformar o callback passado pro A numa função static dentro da outra classe, mas ai é uma baita gambiarra.
O que eu faço nesse caso? Já tentei de tudo mas ainda não reduzi o meu código pra ter um exemplo mínimo (vou fazer isso daqui a pouco).
Alguma ideia?
https://nerdki.blogspot.com/ acessa ai, é grátis
Por exemplo:
class A {
std::function<void(int *p)> callback;
public:
A(std::function<void(int *p)> c) {
callback = c;
}
}; É mais ou menos assim a classe que armazena o callback. Acontece que o seguinte: se eu crio a variável do tipo A dentro de outra classe qualquer, e armazeno o A num std::vector, o programa simplesmente fecha com falha de segmentação. Vou ao gdb e não tem nada cara, só mostra uns '??'. Mas se eu removo o código onde tá adicionando o A, ele funciona normalmente. Também funciona se eu transformar o callback passado pro A numa função static dentro da outra classe, mas ai é uma baita gambiarra.
O que eu faço nesse caso? Já tentei de tudo mas ainda não reduzi o meu código pra ter um exemplo mínimo (vou fazer isso daqui a pouco).
Alguma ideia?
https://nerdki.blogspot.com/ acessa ai, é grátis