Subscriber in a vector of objects
Hello,
I have a class module_diagnostics_processor which subscribes to a certain topic and publishes certain diagnostics messages for the diagnostic aggregator to visualize them in the rqt console. There are about 70 diagnostic topics so I am using std::vector to simplify the code and found an interesting problem. When I use:
//diag_messages is a vector of structs with the message defintions
std::vector<module_diagnostics_processor*> module_processors;
for(int i = 0; i < diag_messages.size(); i++){
module_processors.push_back(new module_diagnostics_processor(diag_messages[i]));
}
everything works as expected and all 70 diagnostic topics are published for the diagnostic aggregator but when I don't use pointers:
std::vector<module_diagnostics_processor> module_processors;
for(int i = 0; i < diag_messages.size(); i++){
module_processors.push_back(module_diagnostics_processor(diag_messages[i]));
}
only the last element of the vector module_processors has it's callbacks called and publishes anything, altough rqt_graph shows all topics subscribed from my node.
i would really like to know where this difference in behavior comes from, so any input would be greatly appreciated.