Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 13040|Vastaus: 2

[C++] Tekniikat C++:lle johdettujen luokkaobjektitietojen dumppaamiseen XML-tiedostodatan jäsentämisessä...

[Kopioi linkki]
Julkaistu 16.1.2019 9.22.59 | | | |
Tätä julkaisua muokattu viimeksi Summer 16.1.2019 klo 09:31

1. Mikä on tekninen ongelma, joka tässä artikkelissa ratkaistaan?

Ratkaistaan ongelma aiemmassa taiteessa, että kun XML-dokumentteja jäsentetään C++-kielellä, perusluokkatunnisteet voivat jäsentää alkuperäisessä XML-dokumentissa esiintyvästä luokkadatasta johdettuja luokkatietoja vain perinteisen jäsennysmenetelmän mukaan, mutta eivät voi täysin jäsentää johdettua luokkadataa.


2. Tekninen tausta

Aiemmassa tekniikassa käytä boost::serializationia johdettujen luokkien siirtämiseen perusluokkaosoittimella tai käytä BOOST_CLASS_EXPORT makroa.

Molemmat yllä mainitut menetelmät nykyisissä teknologioissa perustuvat abstraktin luokan mekanismiin, mutta koska abstrakteja luokkia ei voida toteuttaa konkreettisina olioina, joita voidaan käyttää, XML-dokumenteissa perusluokiksi ilmoitettuja olioita ei voida jäsentää. Nykyinen keksinnön tarkoituksena on varmistaa, että sekä perusluokan objektin että perusluokan objektin merkitsemän johdetun luokkaobjektin tiedot voidaan jäsentää oikein ja säilyttää kokonaan.


3. Tässä artikkelissa esitetty tekninen järjestelmä

Tämä artikkeli ei käytä abstraktia luokkamekanismia, vaan tuo perusluokan osoittimen mukaan perusluokan kutsumaan luokkaan, julistaa perusluokan jäsentämisfunktion virtuaaliseksi funktioksi ja kutsuu jäsennysfunktion perusluokan osoittimen kautta jäsentämisprosessissa, jotta polymorfismia voidaan soveltaa datan dynaamiseen jäsentämiseen ja tallentamiseen, ja lopuksi varmistaa, että sekä perusluokan objektin että siitä johdetun luokkaobjektin data voidaan tallentaa perusluokan määritellyyn osoittimeen.
Tarkat vaiheet:
Vaihe 1: C++-koodi, jolla suunnitellaan kaikki luokat, jotka voivat vastata jäsentetettävien XML-dokumentin tietotunnisteita, ja jäsentää XML-data yksi kerrallaan ylätason tunnisteista.
Vaihe 2: Jokaiselle jäsennellylle tunnisteelle selvitä, onko olemassa muita tageja, jotka perivät tagin perusluokkana, eli johdetaanko tunnistetyyppi muita tunnistetyyppejä;
Vaihe 3: Jos todetaan, että nykyinen tagi ei ole periytynyt perusluokkana, jäsennä nykyinen tagi normaalien jäsennysvaiheiden mukaisesti.
Vaihe 4: Jos todetaan, että nykyinen tunniste periytyy perusluokaksi, selvitä lisäksi, onko perusluokkatunnisteen kuvaama sisältö alisteista perusluokkaobjektille vai johdetun luokkaobjektin alaiseksi;
Vaihe 5: Jos nykyisen perusluokkatunnisteen sisältö määritellään kuvaamaan perusluokkaobjektia, jäsennä nykyinen tagi normaalien vaiheiden mukaisesti.
Vaihe 6: Jos nykyinen perusluokan tunnisteen sisältö kuvaa johdettua luokkaobjektia, muokkaa koodia jäsentämään uuden jäsennysmenetelmän mukaisesti: muokkaa edellisen tyypin tietorakennetta, joka määrittelee perusluokan objektin, ja määritä sen sijaan perusluokan osoitin; Muokkaa perusluokan jäsennysfunktiota ja julista se virtuaaliseksi funktioksi;
Vaihe 7: Missä perusluokkaobjekti alun perin määriteltiin jäsentämistä varten, määritellään sen sijaan perusluokan osoitin, ja tietty muistityyppi osoitetaan sille tunnisteen sisällön kuvaaman tyypin mukaan, ja perusluokan osoitinta käytetään kutsumaan jäsentämisfunktio jäsentämään nykyinen tunniste.
Vaihe 8: Jäsennä ja pelaa nykyinen tagi selvittääksesi, onko tageja vielä jäsentettävissä;
Vaihe 9: Jos todetaan, ettei jäsenneltäviä tageja ole, se tarkoittaa, että jäsennys on suoritettu ja data on tallennettu luokkaan, jolla on korkein vastaavan XML-dokumentin tunniste C++-luokassa.
Vaihe 10: Jos todetaan, että on vielä ratkaisemattomia tageja, jäsennä seuraava tagi vaiheen 2 mukaisesti.

Liitteenä oleva vuokaavio

4. Yhteenveto

C++ esittelee perusluokkaosoittimen, joka määrittää vastaavan tyypin objekteja XML-tunnisteen sisällölle sen mukaan, onko se perusluokka vai johdettu luokka, ja käyttää määriteltyä perusluokkaosoitinta kutsuakseen jäsentämisfunktiota, joka on ilmoitettu imaginaarifunktioksi XML-perusluokan tunnisteen sisällön jäsentämiseksi. Näin ollen, kun XML-perusluokkatunniste kuvaa perusluokan objektidataa, perusluokan jäsennysfunktio kutsutaan dynaamisesti C++:n polymorfismin mukaisesti, ja perusluokkatunnisteen kuvaama perusluokkadata voidaan jäsentää ja säilyttää oikein. Kun XML-perusluokkatunniste kuvaa johdettua luokkaobjektidataa, johdettu luokan jäsennysfunktio kutsutaan dynaamisesti C++:n polymorfismin mukaisesti, ja myös perusluokan tunnisteen kuvaama johdettu luokkadata voidaan jäsentää ja säilyttää oikein.





Edellinen:QQ-protokollan analyysin opas Androidille/PC:lle
Seuraava:Demon Spirit Summon V4.1.8 on käytössä hillityllä tavalla
Julkaistu 16.1.2019 9.26.40 |
Kaavio on poissa
 Vuokraisäntä| Julkaistu 16.1.2019 9.31.49 |

Vuokaavio lisää tiedätkö
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com