关于网友提出的“ 讨论下,如何实现每个子类都拥有各自基类的static数据成员?”问题疑问,本网通过在网上对“ 讨论下,如何实现每个子类都拥有各自基类的static数据成员?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 讨论下,如何实现每个子类都拥有各自基类的static数据成员?
描述: 有时每个个子类都需要一个独立的静态成员,此时能抽象到基类就便利了。
class Base{
public:
static int sdata;
};
int Base::sdata = 0;
class Sub1: public Base {};
class Sub2: public Base {};
但在整个继承体系中,基类与其所有子类共享一份静态数据成员,任何一方修改sdata都会影响到其它方。
虽然可以利用template取巧:
template
class Base{
public:
static int sdata;
};
template int Base::sdata = 0;
class Sub1: public Base {};
class Sub2: public Base {};
但无论从语义还是逻辑上等于"定义了一组基类",每个SubN都拥有与之相应的基类Base
,这违背了定义Base的本意。
在某些场合如工厂方法中难于编码。大家遇到此类问题一般都是怎么解决的?有没有一个优雅清晰的解决方案?
解决方案1: 呵呵,
一个类对应一组对象实例。
一个模板类对应一组类型,每个类型的类对应一组对象实例。
一个类对应一个静态成员这个问题始终是绕不过得。
解决方案2: =,=
我也同意楼上。。 别把C++弄的那么复杂,编程是很简单的事情。。
解决方案3:
++
搞不清楚的东西不要用,这就是为什么我的代码不出莫名其妙的问题
解决方案4: 别自找麻烦搞出心智包袱。
老老实实每个类一个static根本就不废事。
以上介绍了“ 讨论下,如何实现每个子类都拥有各自基类的static数据成员?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3791051.html