gpt4 book ai didi

c++ - 海湾合作委员会错误 : invalid conversion from double* to const double

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:12 30 4
gpt4 key购买 nike

我使用的是 gcc 4.5.0 版。使用下面的简单示例,我假设得到一个错误 invalid conversion from double* to const double*

#include <iostream>
using namespace std;

void foo(const double *a)
{
cout<<a[0]*2.<<endl;
}

int main()
{
double *a=new double[2];
a[0]=1.;
a[1]=2.;
foo(a);
return 1;
}

为什么编译没有错误?

类似的反例如下:

#include<iostream>
using namespace std;

void foo(const double **a)
{
cout<<a[0][0]*2.<<endl;
}


int main()
{
double **a=new double*[2];
a[0]=new double[2];
a[1]=new double[2];
a[0][0]=1.;
foo(a);
cout<<a[0][0]<<endl;
return 1;
}

(第二个示例的解决方案:将 foo 定义为 foo(const double*const* a)。感谢 Jack Edmonds 的评论,这解释了错误消息)

最佳答案

通常,您可以在 C 和 C++ 中隐式地使事物“更稳定”而不是“更不稳定”。因此,您可以将非 const 对象传递给采用 const 对象的函数。

基本上方法声明中的const参数是函数 promise 不修改参数的方式。

更多信息可以看这个问题:Question about const_cast in c++

关于c++ - 海湾合作委员会错误 : invalid conversion from double* to const double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891306/

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