gpt4 book ai didi

c++父类(super class)为子类定义静态成员变量

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

不确定这是否是描述它的正确方法,但我想定义一个 super (抽象)类,几个类将从它继承。问题是我希望父类(super class)为子类定义一组静态成员变量。但是它们对于父类(super class)来说不是静态的。例子,

class abstractExchangeClient{
// Define something here
}
class aExchangeClient: public abstractExchangeClient{
}
class bExchangeClient: public abstractExchangeClient{
}

如果我这样做:

class abstractExchangeClient{
static double fee;
}

然后“费用”对于 abstractExchangeClient 是静态的(如果错误请纠正我)。那么 c++11(或其他)中是否有任何功能可以实现这一点?

@IgorTandetnik 如果有多个共享名称的静态成员,其中一些应初始化为零,而另一些应初始化为其他值。如果我可以有一个地方为子类声明那些静态成员,并初始化它们(相应地为零或其他值)并且可能还为这些初始化步骤注销一些消息,那将是理想的。如果没有这样的机制,我不得不在每个子类中定义那些共享名称的静态变量,并且不时地进行相同的初始化。

最佳答案

所以您希望每个派生类都有一个静态数据成员?我认为这是应用 curiously recurring template pattern 的好地方:

template<typename T>
struct FeeOf {
static double fee = 0.0;
};
struct Derived : public SomeBase, public FeeOf<Derived> {
// not necessary, the name of the static data member
// is already in scope.
using FeeOf<Derived>::fee;
};

我认为没有合理的方法可以仅在该基类中实现它。

关于c++父类(super class)为子类定义静态成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31907788/

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