引數傳遞封裝類KBundle

2021-06-22 07:51:00 字數 3829 閱讀 4576

最近看了android原始碼之後,裡面有乙個用於引數傳遞的類bundle,於是自己寫了乙個簡單的kbundle用於在c++下傳遞多個引數。

以下是源**:

#include #include #include class kbundle

; typedef struct _bundle_data

;}bundle_data;

typedef std::mapdata_map;

public:

kbundle()

~kbundle()

public:

kbundle(const kbundle& _kb)

kbundle& operator=(const kbundle& _kb)

this->m_mapdata = _kb.m_mapdata;

_copywstring(_kb);

return *this;

}public:

void putitem(lpcwstr lpstrkey, int nvalue)

;bd.nitem = nvalue;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, byte bvalue)

;bd.bitem = bvalue;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, char cvalue)

;bd.citem = cvalue;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, double dvalue)

;bd.ditem = dvalue;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, long lvalue)

;bd.litem = lvalue;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, __int64 _n64value)

;bd._n64item = _n64value;

_remove(bd.entype, lpstrkey);

m_mapdata.insert(std::make_pair(lpstrkey, bd));

}void putitem(lpcwstr lpstrkey, lpcwstr lpstrvalue)

;size_t nlength = wcslen(lpstrvalue) + 1;

bd.pwitem = new wchar_t[nlength];

if (bd.pwitem != null)

}int getint(lpcwstr lpstrkey, int ndefault = 0)

;bd.nitem = ndefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.nitem;

}long getlong(lpcwstr lpstrkey, long ldefault = 0l)

;bd.litem = ldefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.litem;

}byte getbyte(lpcwstr lpstrkey, byte bdefault = 0)

;bd.bitem = bdefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.bitem;

}double getdouble(lpcwstr lpstrkey, double ddefault = 0.0)

;bd.ditem = ddefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.ditem;

}char getchar(lpcwstr lpstrkey, char cdefault = '\0')

;bd.citem = cdefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.citem;

}lpcwstr getstringw(lpcwstr lpstrkey, lpwstr lpstrdefault = null)

;bd.pwitem = lpstrdefault;

_getvalue(bd.entype, lpstrkey, bd);

return bd.pwitem;

}__int64 getint64(lpcwstr lpstrkey, __int64 n64default = 0i64)

;bd._n64item = n64default;

_getvalue(bd.entype, lpstrkey, bd);

return bd._n64item;

}size_t getsize() const

bool isempty() const

bool iscontainskey(lpcwstr lpstrkey) const

void removekey(lpcwstr lpstrkey)

m_mapdata.erase(iterdele);}}

void clear()

}m_mapdata.clear();

}private:

void _remove(int ntype, lpcwstr lpstrkey)

switch (ntype)

break;

default:

break;

}m_mapdata.erase(iterdele);

exit0:

return;

}bool _getvalue(int ntype, lpcwstr lpstrkey, bundle_data& bd)

switch (ntype)

bret = true;

exit0:

return bret;

}///>深拷貝

void _copywstring(const kbundle& _kb)

if (iterdele->second.pwitem == null)

lpcwstr lpstrtemp = iterdele->second.pwitem;

iterdele->second.pwitem = null;

iterdele->second.pwitem = new wchar_t[wcslen(lpstrtemp) + 1];

if (iterdele->second.pwitem != null)}}

public:

data_map m_mapdata; ///>item_map

};

類和類之間傳遞引數

方法一 使用繼承和超類 class test1 你也可以用繼承,下面引用超類變數 super.j public class mytest extends test1 public static void main string args 方法二 方法,通過建構函式,或者通過set方法。建構函式 不好...

android OKhttp 引數 傳遞陣列型別

android開發之okhttp上傳byte陣列 文章1 閱讀量3.6k,發布日期2018.10.24 使用httppost傳送 位元組流請求 byte 文章2 閱讀量5.6k,發布日期2019.1.2 有關使用http協議傳輸二進位制檔案 閱讀量1.1w,發布日期2015.7.21 android...

vue 》元件的封裝 及 引數的傳遞

vue元件的定義 元件 component 是vue.js最強大的功能之一 元件可以擴充套件html元素,封裝可重用 在較高層面上,元件是自定義元素,vue.js的編譯器為他新增特殊功能 有些情況下,元件也可以表現用 is 特性進行了擴充套件的原生的html元素 所有的vue元件同時也都是vue例項...