gpt4 book ai didi

c++ - 根据模板参数可选择为静态的类成员

转载 作者:行者123 更新时间:2023-11-30 03:30:28 26 4
gpt4 key购买 nike

设想两个类,StaticFooNonStaticFoo,它们相同,除了类成员在 StaticFoo 中是静态的>,但不在 NonStaticFoo 中。
简单示例:

class StaticFoo {
static void bar();
static int v;
};

class NonStaticFoo {
void bar();
int v;
};

是否可以分解出一个模板类 Foo 来避免代码重复?
这样就可以使用类似的东西

using StaticFoo = Foo<true>;
using NonStaticFoo = Foo<false>;

最佳答案

Is it possible to factor out a template class Foo to avoid code duplication?

“没有”

不幸的是 static 没有像 noexcept 那样被表达式参数化,所以你不能说像 static(false) 这样的东西。

如果不使用宏,您将不得不特化一个模板,这样您就可以在特化中拥有 static 成员:

template<bool = false>
class Foo{
void bar();
int v;
};
template<>
class Foo<true>{
static void bar();
static int v;
};

关于c++ - 根据模板参数可选择为静态的类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919031/

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