簡體   English   中英

在C ++中獲取給定指向它的指針的類型名的類型名

[英]Getting a typename given the typename of a pointer to it in C++

考慮以下代碼:

class c {
  //...
};

template <typename T>
void f(T k)
{
    auto item = new T;
    //...
}

我們聲明一個類c和一個模板函數f ,它們創建一個新的對象類型T

我想更改此函數f以便template參數可以是指針類型 ,它將按如下方式使用:

auto ptr = new c;
f<c*>(ptr);

現在,當我嘗試創建新項目時,問題就來了auto item = new T; ,因為現在T現在是指向c指針的類型名

我知道T永遠是某個東西的指針, 我怎么能得到T指向的類型名? 我想做類似的事情:

template <typename T>
void f(T k)
{
    // If T = int* -> Q = int
    typename ??????? Q;    // <<<<<<<<
    auto item = new Q;
    //...
}

使用std::remove_pointer

#include <type_traits>

using Q = typename std::remove_pointer<T>::type;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM