Я попытался скомпилировать этот пример с https://github.com/augcampos/asterisk-cpp/wiki/Examples, но я получаю эту ошибку:
root@debian:~# g++ TesteCpp.cpp -o tt -lasteriskcpp
TesteCpp.cpp: In function ‘int main():
TesteCpp.cpp:13:39: error: invalid conversion from ‘void (*)(asteriskcpp::ManagerEvent*) to ‘asteriskcpp::onManagerEventCallback_t {aka void (*)(const asteriskcpp::ManagerEvent&)} [-fpermissive]
In file included from TesteCpp.cpp:4:0:
/usr/local/include/asteriskcpp/manager/ManagerConnection.h:49:14: error: initializing argument 1 of ‘void asteriskcpp::ManagerConnection::addEventCallback(asteriskcpp::onManagerEventCallback_t) [-fpermissive]
Как это исправить?
TesteCpp.cpp:
//TesteCpp.cpp
#include <iostream>
#include "asteriskcpp/utils/LogHandler.h"
#include "asteriskcpp/manager/ManagerConnection.h"
using namespace asteriskcpp;
void eventCallback(ManagerEvent* me) {
std::cout << std::endl << "TEST:EVENT" << me->toLog() << std::endl;
}
int main() {
ManagerConnection mc;
mc.addEventCallback(&eventCallback); // add event listener
if (mc.connect("192.168.1.6")) {
if (mc.login("admin", "zzz")) {
mc.logoff();
}
}
mc.disconnect();
return (0);
}
Основываясь на быстрой проверке кода
void eventCallback(ManagerEvent* me) {
std::cout << std::endl << "TEST:EVENT" << me->toLog() << std::endl;
}
должно быть
void eventCallback(const ManagerEvent& me) {
std::cout << std::endl << "TEST:EVENT" << me.toLog() << std::endl;
}