相关疑难解决方法(0)

如何在模板函数中使用不同的结构作为模板参数?

我正在编写这样的模板函数:

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)

并使用它: …

c++ templates struct function-templates c++17

4
推荐指数
1
解决办法
850
查看次数

标签 统计

c++ ×1

c++17 ×1

function-templates ×1

struct ×1

templates ×1