sách gpt4 ăn đã đi

Cách lấy T* từ tham số mẫu T, T& hoặc T*

In lại 作者:太空狗 更新时间:2023-10-29 23:26:41 32 4
mua khóa gpt4 giày nike

我正在尝试找到一种方法来获取模板参数的基类。

考虑以下类:

template 
class Foo
{
công cộng:
Foo(){};
~Foo(){};
C* ptr;
};

nếu như C 是引用(例如 Test&),则 ptr 是类型 C&*

但是无论 C 是引用、指针还是其他任何东西,我都需要获取基类的指针。

  • nếu nhưCĐúngTest&那么ptr需要是Test*,
  • nếu như C Đúng Test* 那么 ptr 需要是 Test*,
  • nếu như C ĐúngBài kiểm tra,Nhưng ptr 需要是 Test*,等等。

有没有办法获得 C 的“基”类,这样我就可以创建我需要的指针?

câu trả lời hay nhất

如果你真的需要底层元素类型,你可以使用移除类型操作特征的递归应用:

#include 

// precv = pointer, reference, extents, const, and volatile
template
struct remove_precv
{
typedef typename std::remove_pointer<
typename std::remove_reference<
typename std::remove_all_extents<
typename std::remove_cv::type>::type>::type>::type type;
};

template
struct element_type_impl
{
typedef typename element_type_impl<
typename remove_precv::type, T>::type type;
};

template
struct element_type_impl
{
typedef T type;
};

template
struct element_type
{
struct null_type { };
typedef typename element_type_impl::type type;
};

Ví dụ,element_type::typeĐúngsố nguyên .

关于c++ - 如何从 T、T& 或 T* 模板参数中获取 T*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323018/

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress