【问题标题】:'Invalid conversion from some_type** to const some_type**''从 some_type** 到 const some_type** 的无效转换'
【发布时间】:2011-02-10 00:53:52
【问题描述】:

我有一个需要const some_type** 作为参数的函数(some_type 是一个结构,该函数需要一个指向该类型数组的指针)。我声明了一个some_type* 类型的局部变量,并对其进行了初始化。然后我把函数称为f(&some_array),编译器(gcc)说:

error: invalid conversion from ‘some_type**’ to ‘const some_type**’

这里有什么问题?为什么我不能将变量转换为 const?

【问题讨论】:

    标签: c++ c gcc compiler-errors


    【解决方案1】:

    您可能需要指定更多上下文,例如参数是否将数据传入或传出(或两者?)函数?

    也尝试将变量设为 const:

    some_type const *some_array = ....;
    

    这读作“some_array 是指向 const some_type 的指针”。代码不能修改所指向的东西。所以你必须在将变量传递给函数之前声明你的变量 const。

    (已编辑...)

    【讨论】:

    【解决方案2】:

    您有几个选项可以绕过 jamesdlin 在他的回答中概述的内容。

    您可以使用中间变量。

    some_type const* const_some_array = some_array;
    f(&const_some_array);
    

    你可以更改f的参数。

    void f(some_type const* const* some_array);
    

    【讨论】:

      【解决方案3】:

      请参阅:comp.lang.c 常见问题解答中的Why can't I pass a char ** to a function which expects a const char **?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-10
        • 2012-09-08
        • 1970-01-01
        • 2012-05-13
        • 2017-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多