首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“const vec&”类型的引用初始化无效?

为什么“const vec&”类型的引用初始化无效?
EN

Stack Overflow用户
提问于 2016-01-05 16:13:36
回答 2查看 937关注 0票数 0

引言

我正在使用itpp库4.3.1版本来计算向量的偏度。库可以从这里下载。

库可以按以下方式安装:

代码语言:javascript
复制
mkdir build;
cd build;
cmake ..
make
sudo make install

源代码

我正在使用下面的源代码来计算偏度。

代码语言:javascript
复制
#include <itpp/stat/misc_stat.h>

using namespace itpp;

int main(int argc, char* argv[])
{
   vector<double> x{2,3,4,5,6};
   double skew = skewness (x);
   return 0;
}

图书馆中的偏度函数

代码语言:javascript
复制
double  itpp::skewness (const vec &x)
    Calculate the skewness excess of the input vector x. 

错误

代码语言:javascript
复制
error: invalid initialization of reference of type ‘const vec& {aka const itpp::Vec<double>&}’ from expression of type ‘std::vector<double>’
    double skew = skewness (x);
                             ^
In file included from  main.cpp:3:0:
/usr/local/include/itpp/stat/misc_stat.h:336:20: note: in passing argument 1 of ‘double itpp::skewness(const vec&)’
 ITPP_EXPORT double skewness(const vec &x);

我不明白为什么我会犯这个错误。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 16:17:56

skewness()似乎接受一个const itpp::Vec<double>&类型的参数,但是您给它一个std::vector<double>,它不能隐式地转换为前一个类型。您需要将x声明为itpp::Vec<double>类型,或者您可以显式地将x转换为该类型的对象,条件是itpp允许您这样做(我不知道库)。

票数 3
EN

Stack Overflow用户

发布于 2016-01-05 16:17:58

const vec&不是const std::vector&,所以参数不匹配。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34616226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档