gpt4 book ai didi

C++:如何获取变量的类型并将其用作模板

转载 作者:太空狗 更新时间:2023-10-29 19:47:05 25 4
gpt4 key购买 nike

我正在为以这种方式声明的函数编写一个 C++ 包装器:

class MyClass
{
public:
template <class T>
T& as();
};

我的包装器需要消除显式模板,因为我不想调用 myClass.as<int>();

所以我尝试实现一个以这种方式声明的新函数:

class MyClass2 : public MyClass
{
public:
template <class T>
void get(T & val);
};

这样我就可以调用

int a;
myClass2.get(a);

有没有办法实现这个功能,让运行时根据参数类型传递类型?像这样的东西:

template <class T>
void MyClass2::get(T & val)
{
val = as< typeof(val) >(); /* Of course typeof does not exist */
}

非常感谢您的帮助。

最佳答案

这没有意义。为什么不写:

template <class T>
void MyClass2::get(T & val)
{
val = as< T >();
}

由于类型是模板参数,因此您不需要 typeof

关于C++:如何获取变量的类型并将其用作模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117950/

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