c++ 可以指定class a成员作为模板参数吗?[duplicate]

zbdgwd5y  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(117)
    • 此问题在此处已有答案**:

Uses of pointers non-type template parameters?(5个答案)
Class member names as non-type template parameter(1个答案)
Pointer to (data) member as non-type template parameter for instance with automatic storage duration / without linkage(2个答案)
3天前关闭。
此帖子已于3天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我试图找出你是否可以这样做的模板:

template <typename T, (something here)>
void DoSomething(T& class_object)
{
    std::cout << class_object.(something here) << std::endl;
}

换句话说,你能不能把你想访问的成员对象传递给模板呢?我在任何地方都找不到任何例子。我知道你可以用一个宏来做这件事:

#define DO_SOMETHING(T, member)
void DoSomething(T& class_object)
{
    std::cout << class_object.member << std::endl;
}

但如果可能的话我想用模板。

vof42yt1

vof42yt11#

大致如下:

template <typename T, auto T::*m>
void DoSomething(T& class_object)
{
    std::cout << (class_object.*m) << std::endl;
}

Demo

相关问题