【发布时间】:2011-05-13 02:31:51
【问题描述】:
每当我尝试创建 Mix_Music 实例时,都会收到此错误:“不允许使用不完整类型”。
但是,我需要在调用Mix_LoadMUS(file)之前获取指针音乐的地址;
代码:
Mix_Music *music;
/* I need the memory address here */
music = Mix_LoadMUS(file);
我该怎么做?
【问题讨论】:
-
1.包括声明 Mix_Music 和 Mix_LoadUS 的头文件。 2.显然你不需要指针音乐的地址;因为您只显示一个函数,它不需要指针的地址。 3.代码可以简化为
Mix_Music *music = Mix_loadMUS(file); -
你是对的,我没有展示整个代码。关键是我需要将内存地址传递给将在那里加载文件的线程。所以我想将一个空的 Mix_Music 添加到某种列表/地图中,然后将内存地址传递给线程。是否将文件加载到那里取决于线程。它适用于其他类,但我不知道如何使用 Mix_Music。包括标题。
-
“音乐”的地址,即“&music”,和一个空的“Mix_Music”的地址是不同的东西。在调用 Mix_LoadMUS() 之前,"&music" 是 指向无处的指针 的地址。之后“&music”指向一个新分配的struct _Mix_Music的地址。 “Mix_Music mmus;”将在堆栈上分配一个空的 Mix_Music。使用 static 或 malloc() 或 new 会将其放在别处。它的地址是“&mmus”;但那是任意Mix_Music 的地址,而不是来自MIX_LoadMUS() 的地址。这不是一个有用的地址,因为 Mix_LoadMUS() 分配了它自己的结构。
-
将 music 作为数组中的指针,意味着线程需要访问数组及其索引。查看更新的答案;在这里插入太多了。
标签: c++ sdl-mixer incomplete-type