【问题标题】:how to create a static template function to a pointer class?如何创建指向指针类的静态模板函数?
【发布时间】:2013-05-28 19:13:16
【问题描述】:

我的模板类A包含一个调用模板类的静态函数的函数:

template <typename T>
void A<T>::fun() {
    T obj = T::create();
    ....
}

如果我希望这段代码在 T = B* 时工作,我应该如何修改它? 我知道我不能做 (*T)::create(),但从概念上讲,这就是我想要的。

【问题讨论】:

  • 澄清一下:当TU*T 不是指针类型时,您希望代码同时工作

标签: c++ class templates static


【解决方案1】:

您可以使用std::remove_pointer 类型特征:

#include <type_traits>

template <typename T>
void A<T>::fun() {
    T obj = std::remove_pointer<T>::type::create();
//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    // ...
}

std::remove_pointer&lt;U*&gt;::typestd::remove_pointer&lt;U&gt;::type 都给 U

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2011-11-21
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多