[發明專利]一種程序接口傳參方法、系統及相關設備在審
| 申請號: | 202011163043.3 | 申請日: | 2020-10-27 |
| 公開(公告)號: | CN112306472A | 公開(公告)日: | 2021-02-02 |
| 發明(設計)人: | 劉均;李河金 | 申請(專利權)人: | 深圳市元征科技股份有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30 |
| 代理公司: | 深圳市深佳知識產權代理事務所(普通合伙) 44285 | 代理人: | 王兆林 |
| 地址: | 518000 廣東省深圳市龍*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 程序 接口 方法 系統 相關 設備 | ||
本申請實施例提供了一種程序接口傳參方法、系統及相關設備,用于擴展現有的可變參數接口函數的可傳參數的數據類型。本申請實施例方法包括:創建子類的對象,并將指向所述子類的對象的基類指針作為參數,傳給所述可變參數接口函數;將需要讀取的子類名寫入可變參數接口函數的可變參數列表;采用變量類型獲取函數根據所述可變參數列表,順序獲取基類對象指針實際指向的子類;通過變量類型轉換函數將所述基類對象指針轉換成所述子類的指針,并根據所述子類的指針讀取所述子類中的數據成員。
技術領域
本申請涉及程序接口傳參技術領域,尤其涉及一種程序接口傳參方法、系統及相關設備。
背景技術
在C、C++語言程序中,經常會遇到接口傳參個數和類型不確定的情況,例如,某個程序接口可能會要求傳入無窮多個參數,而且參數類型是不固定的。
目前常用的可變參數的傳輸方案是基于可變參數接口函數實現,具體而言,通過va_start、va_end、va_arg宏及類型va_list處理可變參數的傳輸。現有方案中,va_arg宏的可傳輸的參數類型有限,可以為int、double等類型,但不能指定可傳輸的參數類型char、short或者float類型,如果傳輸的參數類型char類型會被自動轉換為int類型,如果傳輸的參數類型float類型會被自動轉換為double類型。而且低版本的編譯器不支持c++11及以上的標準,所以可變參數模板的方法不是通用的,只有支持c++11標準的高版本編譯器才能使用。
有鑒于此,為解決上述問題,本申請提出了一種新的程序接口傳參方法。
發明內容
本申請實施例提供了一種程序接口傳參方法、系統及相關設備,用于擴展現有的可變參數接口函數的可傳參數的數據類型。
本申請實施例第一方面提供了一種程序接口傳參方法,所述方法包括:
創建子類的對象,并將指向所述子類的對象的基類指針作為參數,傳給可變參數接口函數;
將需要讀取的子類名寫入可變參數接口函數的可變參數列表;
采用變量類型獲取函數根據所述可變參數列表,順序獲取基類對象指針實際指向的子類;
通過變量類型轉換函數將所述基類對象指針轉換成所述子類的指針,并根據所述子類的指針讀取所述子類中的數據成員。
可選的,作為一種可能的實施方式,本申請實施例中的程序接口傳參方法,創建子類的對象之前,還可以包括:
設置基類以及繼承自所述基類的子類,所述基類包含至少一個虛函數。
可選的,作為一種可能的實施方式,本申請實施例中,所述通過變量類型獲取函數根據所述可變參數列表,順序獲取基類對象指針實際指向的子類,包括:
設置循環讀取的次數,每次循環過程中調用typeid().name()函數獲取基類對象指針實際指向的子類。
可選的,作為一種可能的實施方式,本申請實施例中,變量類型轉換函數包括:dynamic_cast或者static_cast函數。
可選的,作為一種可能的實施方式,本申請實施例中,一個所述子類中包含一種或多種基礎數據類型的參數。
本申請實施例第二方面提供了一種程序接口傳參系統,可包括:
創建模塊,用于創建子類的對象,并將指向所述子類的對象的基類指針作為參數,傳給所述可變參數接口函數;
寫入模塊,用于將需要讀取的子類名寫入可變參數接口函數的可變參數列表;
獲取模塊,采用變量類型獲取函數根據所述可變參數列表,順序獲取基類對象指針實際指向的子類;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市元征科技股份有限公司,未經深圳市元征科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011163043.3/2.html,轉載請聲明來源鉆瓜專利網。





