c ++ const转换

Vla*_*adp 5 c++ compiler-construction casting const

可能重复:
为什么转换(指向非const的指针)到指向const的指针是合法的

我有一个功能:

bool isCirclePolygonIntersection(const Point*, const int*, const Point*,
                                 const Point**, const int*);
Run Code Online (Sandbox Code Playgroud)

我试着这样称呼它:

isCirclePolygonIntersection(p, &r, poly_coord, poly, &poly_size)
Run Code Online (Sandbox Code Playgroud)

在这里poly定义如下:

Point** poly = new Point*[poly_size];
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时出现编译器错误:

error C2664: 'isCirclePolygonIntersection' : cannot convert parameter 4 from 'Point **' to 'const Point **'
1>          Conversion loses qualifiers
Run Code Online (Sandbox Code Playgroud)

从我所学到的是,const当一个函数需要一个非const参数时,你不能给函数赋予参数,否则就没问题了.有谁知道这是什么问题?谢谢.

Dav*_*d V 2

Parashift 对为什么禁止这样做有很好的解释:

http://www.parashift.com/c++-faq-lite/const- Correctness.html#faq-18.17