我有以下代码:
vlib_stage_decoding_config_t Decoder::CfgTransform(const DecodingConfig config)
{
vlib_stage_decoding_config_t cfg;
return cfg;
}
void Decoder::OpenDecode(const DecodingConfig config)
{
vlib_stage_decoding_config_t int_cfg = CfgTransform(config);
vlib_stage_decoding_open(&int_cfg);
}
标题文件:
public ref struct DecodingConfig
{
};
我收到以下错误:
错误1错误C2664:
'Video::Decoding::Decoder::CfgTransform'
:无法将参数1从'const Video::Decoding::DecodingConfig'
转换为'const Video::Decoding::DecodingConfig'
decoder.cpp
这对我来说是非常荒谬的。有什么想法吗?
答案 0 :(得分:2)
试试这个:
vlib_stage_decoding_config_t Decoder::CfgTransform(DecodingConfig^ config)
{
vlib_stage_decoding_config_t cfg;
return cfg;
}
void Decoder::OpenDecode(DecodingConfig^ config)
{
vlib_stage_decoding_config_t int_cfg = CfgTransform(config);
vlib_stage_decoding_open(&int_cfg);
}
const
对托管类型毫无意义。struct
,但DecodingConfig
是引用类型,而不是值类型,因此如果没有跟踪句柄或跟踪引用,则无法传递它。如果您希望DecodingConfig
成为值类型,请使用value struct
代替ref struct
并删除函数参数中的^
。