gpt4 book ai didi

c++ - 是否可以将参数包扩展为不同的成员函数?

转载 作者:太空狗 更新时间:2023-10-29 23:32:11 26 4
gpt4 key购买 nike

基本上我在想的是:

template<typename... Types>
class Foo
{
void Bar(Types var) {};...
};

当像这样专门化时:

Foo<S1, S2, S3> foo;

扩展到:

class Foo
{
void Bar(S1 var){};
void Bar(S2 var){};
void Bar(S3 var){};
};

显然,这在某种程度上没有意义,但我很乐意看到一些想法。

最佳答案

template<class D, class T>
struct FooHelper {
void Bar(T var) {
auto* self=static_cast<D*>(this);
// here use self instead of this
};
};
template<typename... Types>
class Foo: FooHelper<Foo,Types>...
{
template<class D,class T>
friend struct FooHelper<D,T>;
};

这就是您做您想做的事情的方式。

我们使用 CRTP 让基类访问 Foo 中的所有内容。

关于c++ - 是否可以将参数包扩展为不同的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973455/

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