注意静态变量的使用

来源:互联网 发布:abb变频器仿真软件 编辑:程序博客网 时间:2024/05/16 15:29

ALenum CFmtWav::GetALBufferFormat()const
{
 static ALenum eFormat = GetWavFileFormat();
 return eFormat;
}

看似正常的程序由于使用了静态变量,会带来一些潜在的问题,

如果CFmtWav不是一个单件,或者CFmtWav对象的format值会改变,上述程序就有问题了,

比如有两个CFmtWav类的对象,由于使用了静态变量,造成以后创建的对象得到的eFormat值都是第一个对象的,

起初我这么写的目的是应为eFormat 的值是个定值,每次得到的值和第一次都是一样的,所以我锁芯吧eFormat定义成static,但后来发现同时播放两个声音就会产生问题,经分析是由static引起的。

原创粉丝点击