【发布时间】:2016-06-09 21:18:37
【问题描述】:
以下代码编译失败,在 'func(&pobj);' 行出现两个错误声明“无法在函数 main() 中将 'X * *' 转换为 'const X * *'”和“函数 main() 中的参数 1 中的类型不匹配(需要 'const X * *',得到 'X * *') " 尽管它是传递指针参数的正确方法。并且还评论了这个特定的行,即'func(&pobj);'并取消注释它上面的两行,它声明了一个新的'const'指针'pp'所需类型(在func的参数中)但仍然在声明和分配'pp'的行上抛出一个错误,说“无法转换'X * * ' to 'const X * *' in function main()".
using X = int;
void func(const X **);
int main() {
X *pobj = new X(58);
// const X **pp = &pobj; // ERROR
// func(pp);
func(&pobj); // ERROR
}
我相信这是将常量指针作为参数传递的正确方法,我只是不明白为什么程序无法编译。如果我错了,谁能指出上面代码中的错误并建议我正确的逻辑/语法?提前致谢。
更新: 这个问题被标记为重复,但它没有解决手头问题的答案。因此,如果 Stack Overflow 社区能帮助我在这里解决我的问题,我会很高兴的。谢谢。
【问题讨论】: