gpt4 book ai didi

c++ - 继承静态变量成员,但分别共享给每一种继承类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:07 24 4
gpt4 key购买 nike

如果类继承了带有静态变量成员的基类,将是它们唯一的一个成员,与所有继承的类共享。

我有几种继承类,每一种都有很多实例。我希望每个继承类都有一个单独的静态成员,并与其所有实例共享。

如何实现?

谢谢,抱歉我的英语不好。

编辑:

class a{
static int var;};
class b::a{};
class c::a{};

现在,我希望 b 的所有实例都具有相同的 var,并且 c 的所有实例都具有相同的 var,但是 var b 的 > 将不同于 c 的 var

我再次对我的英语感到抱歉,如果你能纠正我,请纠正我。

最佳答案

您可以使用 CRTP 解决这个问题:

struct YourBaseBaseClass {
// put everything that does not depend on your static variable
};

template <YourSubclass>
struct YourBaseClass : YourBaseBaseClass {
static Member variable;
// and everything that depend on that static variable.
};

struct AClass : YourBaseClass<AClass> {
// there is a "variable" static variable here
};

struct AnotherClass : YourBaseClass<AnotherClass> {
// which is different from the "variable" static variable here.
};

AClassAnotherClass两者都有一个 variable静态变量(类型 Member ),但第一个是来自 YourBaseClass<AClass> 的静态变量另一个来自YourBaseClass<AnotherClass> , 这是两个不同的类。

YourBaseBaseClass是可选的,但如果你想操作 AClass 则需要它和 AnotherClass使用 YourBaseBaseClass*指针(你不能有一个 YourBaseClass* 指针,因为 YourBaseClass 不是一个类)。

并记住定义那些静态变量。

关于c++ - 继承静态变量成员,但分别共享给每一种继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375610/

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