gpt4 book ai didi

c++ - 获取模板中变量的类型

转载 作者:行者123 更新时间:2023-11-28 02:37:59 36 4
gpt4 key购买 nike

这最初是通过尝试从 unique_ptr 中提取类型而产生的,结果证明这很容易。但是,我现在对一般情况感兴趣。

这是我正在寻找的:

template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};

template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<TYPE of OBJTYPE::child????>();
};

struct MyIntStruct
{
int child;
};

struct MyDoubleStruct
{
double child;
};

void main(void)
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;

MyFunc(int_struct);
MyFunc(double_struct);
}

因此,我想要一种使用传入 MyFunc 的对象的属性类型来调用 MyChildFunc 的方法。我知道我可以创建另一个模板函数,并将 obj.child 传递给它以允许推导,但我希望有一种方法可以手动推导类型,并直接在模板参数中使用它。

正如我所说,这现在比实际更学术,这就是代码如此做作的原因,但我很想知道是否有办法做到这一点。

最佳答案

怎么样:

template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};

template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<decltype(OBJTYPE::child) >();
};

struct MyIntStruct
{
int child;
};

struct MyDoubleStruct
{
double child;
};


int main(int argc, const char * argv[])
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;

MyFunc(int_struct);
MyFunc(double_struct);
return 0;
}

我用 Xcode 6 编译了它,它似乎可以按预期工作。

关于c++ - 获取模板中变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879021/

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