gpt4 book ai didi

c++ - 带有指向成员模板参数的指针的隐含类型?

转载 作者:太空狗 更新时间:2023-10-29 21:48:01 27 4
gpt4 key购买 nike

我在模板中使用指向成员的指针类型,目前我正在做这样的事情:

template <typename Base, typename Type, Type Base::* Var>
struct Member
{
//Stuff goes here.
};

但是必须先定义 Base、Type,然后再定义 Var,这似乎有点多余,因为 Base 和 Type 隐含在 Var 的类型中。

有什么方法可以做到这一点,这样,在使用/调用 Member 结构时,它只需要使用单个指向成员的指针参数?理论上,像这样:

template <typename Base, typename Type, Type Base::* Var>
struct Member<Var>
{
//stuff goes here
};

struct S
{
int memberVal;
};

int main()
{
Member<&S::memberVal> example;
};

感谢您的帮助!

最佳答案

没办法。只有您的第一个变体是正确的。你给出的例子中 C++ 语法不是那么优雅。就这样吧。

您的第二个示例具有模板特化的语法。虽然它是一个新模板的定义。这很可能会被作为反对意见提出。

关于c++ - 带有指向成员模板参数的指针的隐含类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11857457/

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