While I trying compile my very old game source, I got this error below:
game.h:497:16: error: expression cannot be used as a function
(_f2)(arg);
^
make: *** [Makefile:20: actions.o] Error 1
This is my game.h file:
template<class ArgType>
class TCallList : public SchedulerTask{
public:
TCallList(
boost::function<bool(Game*, ArgType)> f1,
Task* f2,
std::list<ArgType>& call_list,
int64_t interval) :
_f1(f1), _f2(f2), _list(call_list), _interval(interval)
{
//
}
virtual void operator()(Game* arg)
{
if(_eventid != 0){
bool ret = _f1(arg, _list.front());
_list.pop_front();
if(ret){
if(_list.empty()){
//callback function
if(_f2){
(_f2)(arg);
delete _f2;
}
}
else{
//fire next task
SchedulerTask* newTask = new TCallList(_f1, _f2, _list, _interval);
newTask->setTicks(_interval);
newTask->setEventId(this->getEventId());
arg->addEvent(newTask);
}
}
}
}
My tasks.h example:
public:
Task(boost::function1<bool, Game*> f) :
_f(f)
{
//
}
virtual ~Task()
{
//
}
virtual void operator()(Game* arg)
{
_f(arg);
}
My operation system is latest Debian 10 with updates.
Edit:
My source available on github: https://github.com/anyeor/oldsrc