C++ 如何存储Embind';val';在C++;类-错误:调用已删除的构造函数

C++ 如何存储Embind';val';在C++;类-错误:调用已删除的构造函数,c++,emscripten,embind,C++,Emscripten,Embind,我设法使用创建了一个Web音频APIAudioContext,并在函数中使用它。但我不知道如何存储它,以便以后在C++类实例字段中使用( MyValue/Cuff>)。当我编译下面的代码时,我得到 SC_WebAudio.cpp:62:20: error: call to deleted constructor of 'emscripten::val' SC_WebAudioDriver::SC_WebAudioDriver(struct World* inWorld): SC_AudioDri

我设法使用创建了一个Web音频API
AudioContext
,并在函数中使用它。但我不知道如何存储它,以便以后在C++类实例字段中使用(<代码> MyValue/Cuff>)。当我编译下面的代码时,我得到

SC_WebAudio.cpp:62:20: error: call to deleted constructor of 'emscripten::val'
SC_WebAudioDriver::SC_WebAudioDriver(struct World* inWorld): SC_AudioDriver(inWorld) {}
                   ^
#包括
#包括
使用名称空间emscripten;
SC_WebAudioDriver类:公共SC_AudioDriver{
val mContext;//这不起作用
受保护的:
虚拟布尔驱动器安装(int*outNumSamplesPerCallback,double*outSampleRate);
虚拟布尔驱动器启动();
虚拟bool DriverStop();
公众:
SC_WebAudioDriver(结构世界*inWorld);
虚拟~SC_WebAudioDriver();
};
SC_AudioDriver*SC_NewAudioDriver(struct World*inWorld){返回新的SC_WebAudioDriver(inWorld);}
SC_WebAudioDriver::SC_WebAudioDriver(结构世界*inWorld):SC_AudioDriver(inWorld){}
SC_WebAudioDriver::~SC_WebAudioDriver(){
}
bool SC_WebAudioDriver::DriverSetup(int*outNumSamples,double*outSampleRate){
scprintf(“SC_WebAudio:DriverSetup.\n”);
//这使用了实验性的emscripten Embind“val”音译,
//看https://emscripten.org/docs/api_reference/val.h.html
val AudioContext=val::全局(“AudioContext”);
如果(!AudioContext.as()){
AudioContext=val::全局(“webkitAudioContext”);
如果(!AudioContext.as()){
scprintf(“SC_WebAudioDriver:无法获取AudioContext\n”);
返回false;
}
}
val context=AudioContext.new(();
mContext=context;//如何执行此操作?
double sr=context[“sampleRate”].as();
val proc=context.call(“createScriptProcessor”,0,0,2);
int bufSize=proc[“bufferSize”].as();
*outNumSamples=bufSize;
*过饱和=sr;
返回true;
}
val
。从实现来看,您可以使用null或undefined作为初始值设定项列表的一部分对其进行初始化:

class SC_WebAudioDriver : public SC_AudioDriver : mContext(val::undefined()) {...}
或者,可以在类定义中设置默认值:

class SC_WebAudioDriver : public SC_AudioDriver {
    val mContext = val::undefined();

当然,默认构造函数是
delete
d,但是在构造它时,您可以指定一个合适的名称:
SC_WebAudioDriver::SC_WebAudioDriver(…):val(“”{…}