我使用模板我的結構等:大小的數組如在C++函數的參數類型
#pragma pack(push, 1)
template <typename T>
struct S
{
T t;
inline void Set(const T& val) { t = val; }
}
#pragma pack(pop)
T可以是一個浮子,整型,短或炭[10],炭[1]或焦[2 ](最好是任何長度都會很大)。
雖然上面似乎很好地工作,爲整型,我在實施中的字符[N]部分困難:
- 我需要使用函數strncpy或memcpy的,而不是賦值運算符
- 使用上面,編譯器抱怨簽名(const char [2] & val),我通過s.Set(「T」)調用它。
- S與積分和字符類型之間的接口必須與它調用它們的通用代碼相同(並且它不關心它們是什麼類型)。
爲什麼'的char []'s且不'的std :: string's?你不會有這些問題。 – Mat
@Mat它被用在包裝結構的上下文中,直接放在線上,而std :: string不會爲此而遺憾地工作。 – chriskirk
你仍然可以使用'std :: string'作爲你的'Set'方法。 – Mat