
Hi guys, I am writing a class that include gboy's libraries ( http://gobysoft.com/#/software/goby) but I have a problem with boost libraries. The code is: (from gobymodule.cc) void GobyModule::start() { // // 1. Create and initialize MMDriver // // goby::acomms::ModemDriverBase* driver = 0; goby::acomms::protobuf::DriverConfig cfg; // set the serial port given on the command line cfg.set_serial_port(serial_path); using google::protobuf::uint32; // set the source id of this modem // uint32 our_id = goby::util::as<uint32>(argv[2]); cfg.set_modem_id(ID); goby::glog.set_name("WHIO Micromodem"); goby::glog.add_stream(goby::util::logger::DEBUG1, &std::clog); // default to WHOI MicroModem // if (!driver) // { std::cout << "Starting WHOI Micro-Modem MMDriver" << std::endl; driver = new goby::acomms::MMDriver; // turn data quality factor message on // (example of setting NVRAM configuration) cfg.AddExtension(micromodem::protobuf::Config::nvram_cfg, "DQF,1"); // } /////////////////////////////////////// // THE PROBLEM IS HERE ///////////////////////////////////// function_pointer = &handle_data_receive; goby::acomms::connect(&driver->signal_receive, function_pointer); // // 2. Startup the driver // driver->startup(cfg); } (from gobyModule.h) class GobyModule: { public: void function(str::string); } void (*function_pointer)(const goby::acomms::protobuf::ModemTransmission & data_msg, GobyModule* foo); void handle_data_receive(const goby::acomms::protobuf::ModemTransmission & data_msg, GobyModule* foo) { foo->payload_parser(str.str()); } The problem, compiling, is: In file included from /usr/include/boost/function/detail/maybe_include.hpp:18:0, from /usr/include/boost/function/detail/function_iterate.hpp:14, from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52, from /usr/include/boost/function.hpp:64, from /usr/include/boost/thread/future.hpp:20, from /usr/include/boost/thread.hpp:24, from /usr/local/include/goby/acomms/modemdriver/driver_base.h:23, from /usr/local/include/goby/acomms/modem_driver.h:23, from gobyModule.h:10, from gobyModule.cc:1: /usr/include/boost/function/function_template.hpp:913:60: instantiated from ‘void boost::function1<R, T1>::assign_to(Functor) [with Functor = void (*)(const goby::acomms::protobuf::ModemTransmission&, GobyModule*), R = void, T0 = const goby::acomms::protobuf::ModemTransmission&]’ /usr/include/boost/function/function_template.hpp:722:7: instantiated from ‘boost::function1<R, T1>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = void (*)(const goby::acomms::protobuf::ModemTransmission&, GobyModule*), R = void, T0 = const goby::acomms::protobuf::ModemTransmission&, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’ /usr/include/boost/function/function_template.hpp:1064:16: instantiated from ‘boost::function<R(T0)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = void (*)(const goby::acomms::protobuf::ModemTransmission&, GobyModule*), R = void, T0 = const goby::acomms::protobuf::ModemTransmission&, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’ /usr/include/boost/signals/slot.hpp:111:122: instantiated from ‘boost::slot<SlotFunction>::slot(const F&) [with F = void (*)(const goby::acomms::protobuf::ModemTransmission&, GobyModule*), SlotFunction = boost::function<void(const goby::acomms::protobuf::ModemTransmission&)>]’ /usr/local/include/goby/acomms/connect.h:35:11: instantiated from ‘void goby::acomms::connect(Signal*, Slot) [with Signal = boost::signal<void(const goby::acomms::protobuf::ModemTransmission&)>, Slot = void (*)(const goby::acomms::protobuf::ModemTransmission&, GobyModule*)]’ gobyModule.cc:404:66: instantiated from here /usr/include/boost/function/function_template.hpp:112:11: error: too few arguments to function Thank you so much, Matteo