gccバージョン4.5.0を使用しています。次の簡単な例を使用して、私は二重の*からのエラー無効な変換を得るために引き受けることのconstにするダブルgccエラー:double *から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;
}
は(溶液:
反例は似て、次の1です。FOOとFOOを定義(定数二重* constの* a)のジャック・エドモンズのコメントのおかげで、これはエラーを説明しますメッセージ)
変換が無効なのはなぜですか? – luiscubal
double ** aを使用した場合に変換エラーが発生するためです。 –