将双**转换为const双**

时间:2015-07-24 17:06:58

标签: c++

如何从double **转换为const double **

我正在使用ROOT并具有解卷积功能。运行时,我收到一个错误:

  

无法初始化'const Double_t **'类型的参数(又名'const   双**')左值'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);
           } 
     }

1 个答案:

答案 0 :(得分:-1)

注意:“重复”问题的答案解释了为什么隐式演员表不起作用但它没有回答这个问题,“我该怎么做我需要做的事情?”答案是:

使用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;
}