类内指针成员赋值

ndq880815 2010-05-02 05:32:34
class sound_vars
{
protected:
static s8 *mixBufferBase;
static s8 *curMixBuffer;
static u32 mixBufferSize;
u16 mixFreq;
u16 rcpMixFreq;
s16 samplesUntilMODTick;
u16 samplesPerMODTick;
static u8 activeBuffer;
public:
static void SndVSync();
void vars_init(SND_FREQ freq);
void vars_mix(s16 *buffer, u32 *i, u32 samplesToMix);
void vars_Tempo(u32 tem);
u16 get_rcpMixFreq();
};
u32 sound_vars::mixBufferSize = 0;
s8 sound_vars::*mixBufferBase = 0;
s8 sound_vars::*curMixBuffer = 0;
u8 sound_vars::activeBuffer = 0;


s8 sndMixBuffer[736*2];

void sound_vars::vars_init(SND_FREQ freq)
{
// initialize main sound variables
mixBufferSize = freqTable[freq].bufSize;
mixBufferBase = sndMixBuffer; //(1)
curMixBuffer = mixBufferBase; //(2)
activeBuffer = 1;

mixFreq = freqTable[freq].freq;
rcpMixFreq = (1<<28)/mixFreq;
}

makefile在生成obj文件时,报错
main.o(.text+0x170): In function `sound_vars::vars_init(SND_FREQ)':
: undefined reference to `sound_vars::curMixBuffer'
main.o(.text+0x174): In function `sound_vars::vars_init(SND_FREQ)':
: undefined reference to `sound_vars::mixBufferBase'

问题应该出在标注(1)和(2)的两个地方,有高人能帮忙解决一下吗,谢谢。


说明:本人在做GBA上的MOD音乐播放器,有这方面编程经验的人士能给予一些帮助或留下联系方式,谢谢。
本人QQ:106611034
MSN:ndq880815@hotmail.com
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 coding_hello 的回复:]
引用 1 楼 jixingzhong 的回复:
static成员只能在static方法中访问,所以,需要给vars_init带上static属性


大哥,是不是说反了?
是static方法中只能访问static成员吧?static成员应该可以被所有成员函数访问到才对。
[/Quote]

up
oscarswq 2010-05-02
  • 打赏
  • 举报
回复
顶3楼
logiciel 2010-05-02
  • 打赏
  • 举报
回复
3楼正解。
野男孩 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jixingzhong 的回复:]
static成员只能在static方法中访问,所以,需要给vars_init带上static属性
[/Quote]

大哥,是不是说反了?
是static方法中只能访问static成员吧?static成员应该可以被所有成员函数访问到才对。
野男孩 2010-05-02
  • 打赏
  • 举报
回复
s8 sound_vars::*mixBufferBase = 0;
s8 sound_vars::*curMixBuffer = 0;

这两行这么改一下看看:

s8* sound_vars::mixBufferBase = 0;
s8* sound_vars::curMixBuffer = 0;
jixingzhong 2010-05-02
  • 打赏
  • 举报
回复
void vars_init(SND_FREQ freq);
==>
static void vars_init(SND_FREQ freq);
jixingzhong 2010-05-02
  • 打赏
  • 举报
回复
static成员只能在static方法中访问,所以,需要给vars_init带上static属性
ndq880815 2010-05-02
  • 打赏
  • 举报
回复
static函数只能调用static成员,而static成员可以被整个类所调用。
但显然问题不是这个,3楼的改动是正确的,我已经通过编译出来了。谢谢啦

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧