J'utilise gcc version 4.5.0. En utilisant l'exemple simple suivant, je suppose d'obtenir une erreur conversion non valide du double * à Const double *erreur gcc: conversion invalide de 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;
}
Pourquoi est-il compilent sans erreurs?
Un contre est la suivante qui est similaire:
#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;
}
(solution pour le deuxième exemple: définir foo foo (const double * const * a) Merci à Jack commentaire Edmonds ce qui explique l'erreur. message)
Pourquoi la conversion serait-elle invalide? – luiscubal
Parce que j'obtiens une erreur de conversion dans le cas où un double ** a est utilisé. –