2017-11-10 1 views
0

ich mit einem cQueue queue; ein einfaches Modul, die ich eingehende Nachrichten in handleMessage() Warteschlange verwenden: queue.insert(msg);OMNeT ++: Getrennte cQueue für jeden Eingang

Nun erweitert ich mein Modul eine Reihe von Eingängen input in[] und ich haben möchte Eingehende Nachrichten in separaten Warteschlangen für jede Eingabe einreihen. Ich dachte, ich könnte einfach cQueue queue[]; oder cQueue queue[gateSize("in")]; initialisieren und dann msg->getArrivalGate() in handleMessage() verwenden, um die richtige Warteschlange auszuwählen.

Leider bekomme ich bereits Fehler für die Initialisierung: field has incomplete type. Irgendwelche Hilfe oder Vorschläge?

+0

Fügen Sie in Ihrer 'omnetpp.ini' eine Zeile' debug-on-errors = true' hinzu. Dann debugge deine Simulation. Die IDE zeigt Ihnen die Codezeile an, die zum Beenden der Simulation führt. Ref: [OMNeT ++ Handbuch] (https://omnetpp.org/doc/omnetpp/manual/#sec:run-sim:debugging-support) –

Antwort

0

Scheinbar gateSize() funktioniert nicht in der Klassendeklaration. Außerdem muss ich das cQueue Array mit einer bestimmten Größe deklarieren. Daher habe ich einfach angenommen, dass ich höchstens 10 Eingänge für jedes dieser Modulobjekte habe (oder irgendeine andere Zahl auswähle) und ein Array fester Größe erzeugt habe: cQueue queue[10];. Wenn weniger als 10 Eingänge vorhanden sind, werden einige der Warteschlangen gerade nicht verwendet.

Dies ist wahrscheinlich nicht die beste Lösung, aber es funktioniert. Ich habe versucht, std::vector dynamisch hinzufügen Warteschlangen während initialize(), aber es hat nicht funktioniert.

Verwandte Themen