У меня есть вопрос. Я действительно надеюсь, что кто-то может помочь мне или указать мне в правильном направлении. В принципе у меня есть следующий C++ код:Вызов класса C++ из другого класса
void ComparePackets::run_timer(Timer *)
{
Packet *p = input(1).pull();
if (p)
p->kill();
_timer.reschedule_after(_interval);
}
и мне нужно позвонить/запустить этот код внутри следующего блока кода:
void ComparePackets::check(Packet *p, Packet *p)
{
bool different = false;
if (p->length() != q->length())
different = true;
do
{
////Insert code to call ComparePackets::run_timer(Timer *) code here///
}
while (p->length() == 106);
}
Я попытался все, что я знаю, (правда, не так много), но просто продолжайте получать сообщения об ошибках при компиляции всего кода. Идея этого фрагмента кода состоит в том, чтобы отбросить пакеты из одного интерфейса с предустановленными интервалами, когда на другом интерфейсе появятся пакеты длиной 106 байт. Любая помощь очень ценится!
Класс ComparePackets является:
class ComparePackets : public Element { public:
ComparePackets() CLICK_COLD;
//TimedSink() CLICK_COLD;
const char *class_name() const { return "ComparePackets"; }
const char *port_count() const { return "2/2"; }
const char *processing() const { return PULL; }
//int configure(Vector<String> &, ErrorHandler *) CLICK_COLD;
int initialize(ErrorHandler *) CLICK_COLD;
void cleanup(CleanupStage) CLICK_COLD;
//void add_handlers() CLICK_COLD;
Packet *pull(int);
void run_timer(Timer *);///////////
частные:
Packet *_p[2];
bool _available[2];
NotifierSignal _signal[2];
bool _timestamp : 1;
Timer _timer;///////////////////
Timestamp _interval;////////////////
//uint32_t _ndiff;
//enum { D_LEN, D_DATA, D_TIMESTAMP, D_NETOFF, D_NETLEN, D_NETHDR,
// D_MORE_PACKETS_0, D_MORE_PACKETS_1, D_LAST };
//uint32_t _diff_details[D_LAST];
void check(Packet *, Packet *);
//static String read_handler(Element *, void *) CLICK_COLD;
//static int write_handler(const String &, Element *, void *, ErrorHandler *) CLICK_COLD;
};
Любая причина не использовать this-> runTimer (Arg) или просто runTimer (Arg) в цикле? – user3147395
Не могли бы вы также поделиться объявлением класса 'ComparePackets'? –
дважды используйте аргумент 'p' (дублируется). ЕСЛИ У ВАС ЕСТЬ СООБЩЕНИЕ ОШИБКИ, вот важная информация, без помощи. –