gpt4 book ai didi

C++ SDL 混音器 Mix_Music : incomplete type is not allowed

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:20 24 4
gpt4 key购买 nike

每当我尝试创建 Mix_Music 实例时,我都会收到此错误:“不允许使用不完整的类型”。

但是,在调用Mix_LoadMUS(file)之前,我需要得到指针music的地址;

代码:

Mix_Music *music;

/* I need the memory address here */

music = Mix_LoadMUS(file);

我该怎么做?

最佳答案

不完整类型

#include "SDL_mixer.h "应该没问题 1 , 2 .

如果没有 SDL 包含告诉编译器那些 SDL 引用(Mix_Musi、Mix_LoadMUS 等)也引用什么,编译器就无法编译与 SDL 相关的代码。请参阅 kekkai.org/roger 上的 SDL_Mixer 教程 3它有一个完整的例子。

1 SDL 包含文件
2 Mix_LOadMUS
3带有完整示例的 SDL 教程

--

更新:使用一系列音乐项目

这是一个示例,说明如何从线程代码中或词法上与指针分配分开的任何位置访问指向 Mix_ Music 的特定指针多变的。实际实现可能需要使用动态数组分配,并且需要为文件未找到或加载失败等添加错误处理。

MEnt.h 用于初始化和线程模块的通用 iclude 文件:

#include <cstdlib>
#include "SDL.h"
#include "SDL_mixer.h"

enum { MAXENTRIES=1024 };
struct MEnt{
Mix_Music * music;
char *filename;
};

extern MEnt Marray[MAXENTRIES];
extern int Mselected;

程序初始化:

#include "MEnt.h"

// Alocate space for array of music items

MEnt Marray[MAXENTRIES];
int Mselected=-1;

在线程的代码中,包括:

#include "MEnt.h"
// Return a pointer for the selected music item:
// Allocate new Mix_Music* if not already done,
// otherwise return the already allocated pointer.
Mix_Music *getSelected(){
Mix_Music *music;

if(Mselected >= 0 && Mselected < MAXENTRIES){
struct MEnt &current=Marray[Mselected];
if(!(music=current.music) &&
(current.filename!=NULL))
music=current.music=
Mix_LoadMUS(current.filename);
}
return music;
}

关于C++ SDL 混音器 Mix_Music : incomplete type is not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com