Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13040|Jawab: 2

[C++] Teknik untuk C++ untuk membuang data objek kelas turunan saat mengurai data file XML...

[Salin tautan]
Diposting pada 16/01/2019 09.22.59 | | | |
Posting ini terakhir diedit oleh Summer pada 2019-1-16 09:31

1. Apa masalah teknis yang harus dipecahkan dalam artikel ini?

Memecahkan masalah dalam seni sebelumnya bahwa saat mengurai dokumen XML dalam bahasa C++, tag kelas dasar data kelas turunan yang muncul dalam dokumen XML asli hanya dapat mengurai data kelas dasar sesuai dengan jenis kelas dasar sesuai dengan metode penguraian konvensional, tetapi tidak dapat sepenuhnya mengurai data kelas turunan.


2. Latar belakang teknis

Dalam seni sebelumnya, gunakan boost::serialization untuk mentransfer kelas turunan dengan penunjuk kelas dasar atau gunakan makro BOOST_CLASS_EXPORT.

Kedua skema di atas dalam teknologi yang ada didasarkan pada mekanisme kelas abstrak, tetapi karena kelas abstrak tidak dapat dibuat-instans sebagai objek konkret yang dapat digunakan, objek yang dideklarasikan sebagai kelas dasar dalam dokumen XML tidak dapat diuraikan. Penemuan ini dimaksudkan untuk memastikan bahwa data dari objek kelas dasar itu sendiri dan objek kelas turunan yang ditandai oleh objek kelas dasar dapat diurai dengan benar dan dipertahankan sepenuhnya.


3. Skema teknis yang disediakan dalam pasal ini

Makalah ini tidak menggunakan mekanisme kelas abstrak, tetapi memperkenalkan penunjuk kelas dasar ke dalam kelas yang dipanggil oleh kelas dasar, mendeklarasikan fungsi penguraian kelas dasar sebagai fungsi virtual, dan memanggil fungsi penguraian melalui penunjuk kelas dasar dalam proses penguraian, sehingga dapat menerapkan polimorfisme untuk mengurai dan menyimpan data secara dinamis, dan akhirnya memastikan bahwa data dari objek kelas dasar dan objek kelas turunan yang berasal dari kelas dasar dapat disimpan dalam penunjuk yang ditentukan kelas dasar.
Langkah-langkah khusus:
Langkah 1: Kode C++ untuk merancang semua kelas yang dapat sesuai dengan tag data dalam dokumen XML yang akan diuraikan, dan mengurai data XML satu per satu dari tag tingkat atas.
Langkah 2: Untuk setiap tag yang diuraikan, tentukan apakah ada tag lain yang mewarisi tag sebagai kelas dasar, yaitu, apakah jenis tag tersebut berasal dari jenis tag lain;
Langkah 3: Jika ditentukan bahwa tag saat ini tidak diwariskan sebagai kelas dasar, uraikan tag saat ini sesuai dengan langkah-langkah penguraian normal.
Langkah 4: Jika ditentukan bahwa tag saat ini diwariskan sebagai kelas dasar, tentukan lebih lanjut apakah konten yang dijelaskan oleh tag kelas dasar berada di bawah objek kelas dasar atau objek kelas turunan;
Langkah 5: Jika konten tag kelas dasar saat ini ditentukan untuk mendeskripsikan objek kelas dasar, uraikan tag saat ini sesuai dengan langkah normal.
Langkah 6: Jika konten tag kelas dasar saat ini menjelaskan objek kelas turunan, ubah kode untuk diurai sesuai dengan metode penguraian baru: ubah struktur data dari jenis sebelumnya yang mendefinisikan objek kelas dasar dan tentukan penunjuk kelas dasar sebagai gantinya; Ubah fungsi penguraian kelas dasar dan deklarasikannya sebagai fungsi virtual;
Langkah 7: Di mana objek kelas dasar awalnya ditentukan untuk penguraian, penunjuk kelas dasar ditentukan sebagai gantinya, dan jenis memori tertentu dialokasikan untuknya sesuai dengan jenis yang dijelaskan oleh konten label, dan penunjuk kelas dasar digunakan untuk memanggil fungsi penguraian untuk mengurai label saat ini.
Langkah 8: Uraikan dan putar tag saat ini untuk menentukan apakah masih ada tag yang harus diuraikan;
Langkah 9: Jika ditentukan bahwa tidak ada tag yang akan diuraikan, itu berarti penguraian telah selesai dan data telah disimpan ke kelas dengan label tertinggi dari dokumen XML yang sesuai di kelas C++.
Langkah 10: Jika ditentukan bahwa masih ada tag yang belum diselesaikan, uraikan tag berikutnya sesuai dengan langkah 2.

Bagan alur terlampir

4. Ringkasan

C++ memperkenalkan penunjuk kelas dasar untuk menetapkan objek dari jenis yang sesuai ke konten tag XML sesuai dengan apakah itu kelas dasar atau kelas turunan, dan menggunakan penunjuk kelas dasar yang ditentukan untuk memanggil fungsi penguraian yang dideklarasikan sebagai fungsi imajiner untuk mengurai konten tag kelas dasar XML. Dengan cara ini, ketika tag kelas dasar XML menjelaskan data objek kelas dasar, fungsi penguraian kelas dasar akan dipanggil secara dinamis sesuai dengan polimorfisme C++, dan data kelas dasar yang dijelaskan oleh tag kelas dasar dapat diurai dan dipertahankan dengan benar. Ketika tag kelas dasar XML menjelaskan data objek kelas turunan, fungsi penguraian kelas turunan akan dipanggil secara dinamis sesuai dengan polimorfisme C++, dan data kelas turunan yang dijelaskan oleh tag kelas dasar juga dapat diurai dan dipertahankan dengan benar.





Mantan:Tutorial analisis protokol QQ untuk Android/PC
Depan:Demon Spirit Summon V4.1.8 digunakan dengan cara yang sederhana
Diposting pada 16/01/2019 09.26.40 |
Diagram alur hilang
 Tuan tanah| Diposting pada 16/01/2019 09.31.49 |

Diagram alur menambahkan Anda tahu
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com