gpt4 book ai didi

c++ - 将实例变量类型映射到模板成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:29 28 4
gpt4 key购买 nike

想象一下

struct A {
template <class T>
T getFirstElement();

vector<float> floatVector;
vector<int> intVector;
};

在实现文件中:

template <>
float A::getFirstElement<float>() {
return floatVector[0];
}

template <>
int A::getFirstElement<int>() {
return intVector[0];
}

因为我知道我的成员变量的类型,所以即使命名它们也显得有些过分了。有没有办法让某些东西(比如类型列表)在编译时说明这个结构的成员是什么?想要更简洁且没有显式模板特化的内容。

最佳答案

使用 std::tuple 你可以这样做

struct A {
template <class T>
T getFirstElement() const
{
return std::get<std::vector<T>>(Vectors)[0];
}

std::tuple<std::vector<float>, std::vector<int>> Vectors;
};

使用可变参数模板:

template <typename ... Ts>
struct A_impl {
template <class T>
T getFirstElement() const
{
return std::get<std::vector<T>>(Vectors)[0];
}

std::tuple<std::vector<Ts>...> Vectors;
};

struct A : A_impl<float, int> {};

关于c++ - 将实例变量类型映射到模板成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com