您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 讨论下,如何实现每个子类都拥有各自基类的static数据成员?

讨论下,如何实现每个子类都拥有各自基类的static数据成员?

来源:网络整理     时间:2016/9/8 5:45:04     关键词:

关于网友提出的“ 讨论下,如何实现每个子类都拥有各自基类的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:

引用 1 楼 taodm 的回复:
别自找麻烦搞出心智包袱。
老老实实每个类一个static根本就不废事。

++
搞不清楚的东西不要用,这就是为什么我的代码不出莫名其妙的问题 解决方案4:

别自找麻烦搞出心智包袱。
老老实实每个类一个static根本就不废事。


以上介绍了“ 讨论下,如何实现每个子类都拥有各自基类的static数据成员?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3791051.html

相关图片

相关文章