使用C ++ / CLI时出现奇怪的错误 - 无法从参数类型转换为相同的参数类型

时间:2011-08-25 17:48:35

标签: c++-cli

我有以下代码:

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

这对我来说是非常荒谬的。有什么想法吗?

1 个答案:

答案 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);
}
  1. const对托管类型毫无意义。
  2. 尽管您使用了struct,但DecodingConfig是引用类型,而不是值类型,因此如果没有跟踪句柄或跟踪引用,则无法传递它。如果您希望DecodingConfig成为值类型,请使用value struct代替ref struct并删除函数参数中的^