我正在编写这样的模板函数:
template<typename T>
std::string EncodeData(int DataType, T Data, std::string ReadCommandID, std::string& ThisID);
Run Code Online (Sandbox Code Playgroud)
我想使用的类型T是一些不同的结构,例如:
struct A
{
int A_data;
bool A_data_2;
// etc.......
};
struct B
{
double B_data;
char B_data_2;
// etc.......
};
Run Code Online (Sandbox Code Playgroud)
我希望函数可以根据不同的struct传递来访问不同的成员变量T,所以我写了这样的代码:
template<typename T>
std::string EncodeData(int DataType, T Data, std::string ReadCommandID, std::string& ThisID)
{
if(std::is_same<T, A>{})
{
// Do something with Data.A_data and Data.A_data_2
}
else if(std::is_same<T, B>{})
{
// Do something with Data.B_data and Data.B_data_2
}
// other code.
}
Run Code Online (Sandbox Code Playgroud)
并使用它: …