Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zugriff auf Parameter anderer Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.07.2010, 10:28 Uhr
holger1981



Ich habe folgendes Problem:
Ich sitze auf einem Objekt, das so eine Art Router darstellt. Dieser Router hat mehrere Ausgänge (#taps, Typ: cGate), an denen Kanäle (cChannel) hängen. Die Parameter des Kanals kann ich mittlerweile auslesen - jetzt möchte ich sie aber ändern, und weis nicht wie ...

Wichtig: "delay" ist via addPar() an cChannel angefügt, und hat keine set()-Funktion.



Code:
for (int i=0; i<taps; i++)
{
         // Erzeuge einen Zeiger auf das eigene Gate
        cGate *myGate = this->gate("ethg$o", i);

        if (COMMENTS_ON) EV << "Get channel info:" << endl;
        if (myGate != NULL)
        {
            if (COMMENTS_ON) EV << myGate->getFullName() << endl;
        }

        // Erzeuge einen Zeiger auf den Kanal, an
        // dem das Gate angeschlossen ist
        cChannel *myChannel = myGate->getChannel();
        if (myChannel != NULL)
        {

            // Suche nach dem Parameter "delay" und drucke
            // ihn auf der Console aus
            if (COMMENTS_ON) EV << myChannel->getFullName() << endl;
            if (COMMENTS_ON) EV << myChannel->hasPar("delay") << endl;
            int parNum = myChannel->findPar("delay");
            double delay = myChannel->par(parNum);
            if (COMMENTS_ON) EV << delay << endl;

                        // Ändere den Parameter
                        ???
        }
}


--
Man sollte Antworten immer da suchen, wo sich offensichtlich viel Kompetenz tummelt.

Dieser Post wurde am 29.07.2010 um 10:32 Uhr von holger1981 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.07.2010, 14:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja im prinzip braucht doch cChannel nur eine "setPar" funktion, alle "gegenstücke" hast du ja bereits.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.07.2010, 14:23 Uhr
holger1981



Hmmm ... das ist ja genau das Problem - an cChannel komme ich nicht heran, will sagen, diese Klasse gehöhrt zum Framework und ist nicht editierbar. Ich brauche einen Weg, es von außerhalb zu verändern.

addPar() fügt einen Parameter eine Klasse hinzu, ohne set()- und get()-Funktionen bereitzustellen, so kann man ein bestehendes Objekt nehmen, einen Parameter hinzufügen, und dieses Objekt dann weiter benutzen. Andere Objekte derselben Klasse haben diesen Parameter dann nicht.

Kann ich nicht irgendwie einen Zeiger oder eine Referenz auf den "delay" hinbekommen, und den Wert im Speicher von hinten durch die Brust überschreiben?
--
Man sollte Antworten immer da suchen, wo sich offensichtlich viel Kompetenz tummelt.

Dieser Post wurde am 29.07.2010 um 14:26 Uhr von holger1981 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.07.2010, 09:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ist das ganze aus dem omnet++ framework? weil dort gibt es eine cDelayChannel klasse, welche auch ein "getDelay" und "setDelay" hat. (siehe www.omnetpp.org/doc/omnetpp40/api/classcDelayChannel.html#9c3c1a54a6e7c94e685d202c3e04df52 )

ansonsten bekommst du (wenn ich das richtig sehe) bei "par" ein cPar& zurück, also eine referenz auf den parameter. da drüber lässt sich der wert natürlich auch ändern!

also:


C++:
// bekommen
cPar& delay = myChannel->par(parNum);
EV << delay.doubleValue() << endl;

// setzen
delay.setDoubleValue(1234.56789);
EV << delay.doubleValue() << endl;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: