【发布时间】:2013-11-23 11:41:57
【问题描述】:
用下面的代码
void TestF(const double ** testv){;}
void callTest(){
double** test;
TestF(test);
}
我明白了:
'TestF' : cannot convert parameter 1 from 'double **' to 'const double **'
我不明白为什么。
为什么test 不能默默地转换为const double**?
我为什么要明确地这样做?我知道
TestF(const_cast<const double**>(test))
使我的代码正确,但我觉得这应该是不必要的。
我缺少一些关于 const 的关键概念吗?
【问题讨论】:
-
这个问题已经在这里讨论过很多次了,但是这里有一个FAQ条目专门针对这个问题parashift.com/c++-faq/constptrptr-conversion.html
-
第一个代码块中没有演员表。有一个隐式转换,各种答案解释了为什么那个转换是不合法的。
标签: c++ constants const-cast