C ++ неверная инициализация ссылки типа 'const std ::? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь развить некоторые функции 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)
  */

Я получил ошибку: invalid initialization of reference of type 'const std :: ......

Ошибка отображается в эта строка:

 double  ys = scalar_product(x , y);

Извините, но я не очень хорош в C ++.

1 Ответ

1 голос
/ 17 февраля 2020

Аргументы scalar_product имеют тип std::vector<double> const&, вы передаете переменные типа double, переменные, передаваемые в качестве аргумента, должны быть совместимого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...