gpt4 book ai didi

c++ - 在 C++ 中,对于某些类型 T,如何从 "const T**"获取 "T**"?

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:24 24 4
gpt4 key购买 nike

我有以下 C++ 代码片段:

class T { };

void f(const T**) { }

int main() {
T *x = new T[5];
f(&x);
}

当我尝试编译时,g++ 报告从“T**”到“const T**”的无效转换。我做了some research我理解这个错误。典型的修复方法是将 f(const T**) 的定义更改为 f(const T* const*),这会立即解决问题。

不幸的是,在我的例子中,f 是另一个库中的函数,我无法更改 f 的定义。如何将 x 的地址传递给 f

最佳答案

相反,您可以传递存储与 x 相同值的指针的地址。

int main() {
T *x = new T[5];
T const *y = x;
f(&y);
}

f 返回时,您可以将值复制回 x

你也可以投地址。通过 T const * 写入 T * 类型的对象不是别名冲突。

int main() {
T *x = new T[5];
f(const_cast<T const**>(&x));
}

在我看来,这是有效的这一事实并不明显,只是简单地传递一个拷贝然后分配回 x

关于c++ - 在 C++ 中,对于某些类型 T,如何从 "const T**"获取 "T**"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com