将双精度类型**转换为const双精度类型**
Converting a double ** to a const double**
如何将双精度类型**转换为const双精度类型**
我正在使用ROOT和反卷积函数。当运行时,我收到一个错误:
不能初始化'const Double_t **'类型的形参(也称为'constdouble **'),左值类型为'Double_t **'(也称为'double **')
我这样定义参数:
Double_t ** resp = new Double_t * [ybins];
for (int f = 0; f < xbins ; f = f+1){
for (int i = 0; i < ybins; i = i+1){
resp[f][i] = hinr->GetBinContent(i+1,f+1);
}
}
注意:"duplicate"问题的答案解释了为什么隐式强制转换不起作用,但它没有回答这个问题,"我如何做我需要做的事情?"答案是:
使用c风格的强制转换或c++风格的const_cast。c++的const_cast是首选,因为它使你的意图更清晰。
#include <iostream>
int main(int argc, char * argv[])
{
double a = 3.14159;
double * b = & a;
double **c = & b;
const double ** d = (const double **) c;
std::cout << **d << std::endl;
// const_cast is the preferred approach.
const double ** e = const_cast<const double **> (c);
std::cout << **e << std::endl;
return 0;
}
相关文章:
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- if(双精度类型 == 字符类型)
- 为什么乘法与C++双精度类型值的加法一样快?
- 如何将双精度类型的鼠标移动 x 和 y 从主机传递到 Qemu 中的虚拟机
- 解释为什么 C++ 和 C# 对双精度类型具有不同的最大值?
- 由于C++中双精度类型的准确性而导致的错误
- 由将值分配给双精度类型的变量而导致的浮点异常
- 如何替换具有双精度类型的模板参数
- 在双精度类型数组中使用 memset()
- 如何将双精度类型转换为 DWORDLONG 或 DWORD 转换为 DWORDLONG 或 DWORD_PTR 转换为
- 无法将值赋给双精度类型
- 使用分数正确初始化双精度类型
- g++ abs()在短整型上似乎将其转换为双精度类型
- 常数表达式可以是双精度类型而不是只能是整型吗?
- 将c++双精度类型*转换为Java双精度类型
- 请求从"双精度"类型转换为非标量类型以及其他一些错误
- 无法从不区分大小写的字符串中提取双精度类型
- 如何将双精度类型转换为char*类型
- 复杂/双精度类型的运算符重载"+"
- 在c++中将包含二进制操作的字符串转换为双精度类型