C++ :在派生类中用不同的值初始化基类常量静态变量?
我有一个带有常量静态变量 a 的基类 A。我需要类 B 的实例对静态变量 a 具有不同的值。如何实现这一点,最好使用静态初始化?
class A {
public:
static const int a;
};
const int A::a = 1;
class B : public A {
// ???
// How to set *a* to a value specific to instances of class B ?
};
I have a base class A with a constant static variable a. I need that instances of class B have a different value for the static variable a. How could this be achieved, preferably with static initialization ?
class A {
public:
static const int a;
};
const int A::a = 1;
class B : public A {
// ???
// How to set *a* to a value specific to instances of class B ?
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你不能。所有派生类共享静态变量的一个实例。
You can't. There is one instance of the static variable that is shared by all derived classes.
静态成员在应用程序中是唯一的。您的系统中有一个
A::a
常量。您可以做的是在B
中创建一个B::a
静态常量,它将隐藏A::a
静态(如果您不这样做) t 使用完全限定名称:Static members are unique in the application. There is a single
A::a
constant in your system. What you can do is create aB::a
static constant inB
that will hide theA::a
static (if you don't use the fully qualified name:您可以使用 奇怪的重复模板模式(您必须丢失
const 虽然)。
You can do this with Curiously recurring template pattern (you'll have to lose the
const
though).也许我们可以尝试以下方式::
下面的好处是你不必多次编写代码,但实际生成的代码可能会很大。
这是我的其他代码示例的一部分..不介意许多其他数据,但可以看到概念。
May be we can try this way as below ::
The benefit of the below is that you don't have to write the code multiple times, but the actual generated code might be big.
This is part of my other code example .. don't mind many other data but concept can be seen.