C++的无效类型初始化:“const STD::?” 我试图开发一些C++函数,以便在R项目中重用它们。 #include <Rcpp.h> using namespace Rcpp; double scalar_product(std::

C++的无效类型初始化:“const STD::?” 我试图开发一些C++函数,以便在R项目中重用它们。 #include <Rcpp.h> using namespace Rcpp; double scalar_product(std::,c++,r,C++,R,C++的无效类型初始化:“const STD::?” 我试图开发一些C++函数,以便在R项目中重用它们。 #include <Rcpp.h> using namespace Rcpp; double scalar_product(std::vector<double> const& a, std::vector<double> const& b) { if (a.size() != b.size()) { throw std::runt

C++的无效类型初始化:“const STD::?” 我试图开发一些C++函数,以便在R项目中重用它们。
#include <Rcpp.h>

using namespace Rcpp;

double scalar_product(std::vector<double> const& a, std::vector<double> const& b)
{
  if (a.size() != b.size()) { throw std::runtime_error("different sizes"); }

  return std::inner_product(a.begin(), a.end(), b.begin(), 0.0);
} // scalar_product


double hashC(double x, double y) {


double  ys = scalar_product(x , y);

    if (ys > 0) {
      return 1;
    } else if (ys == 0) {
      return 0;
    } else {
      return 0;
    }


}

/*** R
x=c(1,2,3,4)
  y=c(-1,-2,-3,-5)
  d=hashC(x,y)
  print("d")
  print(d)
  */

<对不起,但我不擅长C++。< /P> < P> SCALARI产品的参数都是STD类型:vector const &,您传递的是双类型变量,作为参数传递的变量必须是兼容类型。p> 请不要剪切错误消息。你遗漏了所有告诉你问题所在的重要信息!请在问题中添加完整的错误消息。为什么要将双精度传递给需要双精度向量的函数?投票关闭是因为传递了错误的数据类型。scalar_product接受vector类型的参数,但传递的是double类型的变量。也许这是个问题@mouad2020标量乘积取两个std::vector const&。在hashC中,x和y是双精度的,而不是std::vector。听起来您应该使用Rcpp::NumericVector而不是std::vector;我无法在R中使用hashC函数:在R控制台中,我尝试了:sourceCppC:/Users/mouad/Videos/Private/mouad。cpp@mouad2020这是一个有趣的问题,我认为你应该问另一个问题,详细报告这个问题。Ok@anastaciu。我会等几天,因为有人对我的问题投了不好的票。谢谢你宝贵的帮助@mouad2020 DV通常与不符合网站的询问标准有关,阅读,而且,这些是快速阅读,可以帮助你有更好的机会获得紫外线。我找到了第二个问题的解决方案。我应该在C++中使用这个前缀//[[RCPP::Ext] ],以使每个C++函数在R中都可用。
 double  ys = scalar_product(x , y);