Прохождение экземпляра Rinside 'R' в виде параметра между классами/методами

StackOverflow https://stackoverflow.com/questions/5357765

  •  27-10-2019
  •  | 
  •  

Вопрос

Я использовал RCPP и Rinside, чтобы интегрировать р а также C ++. Анкет У нас есть сложная, но хорошо спроектированная архитектура C ++, и мне трудно получить доступ к R только из 1 функции. Можно ли пройти R экземпляр для разных классов / функций, чтобы получить более ООП -дизайн? Если да, есть ли примеры?

Чтобы уточнить запрос, я хочу сказать, что что -то подобное,

void foo(RInside& R0, int& x0)
{
 R0.assign(x0,"totalSum");
}
void foo2(RInside& R0, int& y0)
{
  R0.assign(y0,"temp");
   R0.parseEvalQ("totalSum = totalSum + temp"); 
 }
int main(int argc, char *argv[])
{   
  RInside R(int argc, char *argv[]);
  int x=10, y = 11;
  foo(R,x);
  foo2(R,y);
  return 0;
}

В настоящее время я замечаю, что каждый призыв к Foo, вероятно, создает новый экземпляр Rinside.

Спасибо - эгон

Это было полезно?

Решение

Да, и как я писал ранее Список RCPP-Devel (Чего вам следует следовать, если вы заботитесь о RCPP и RINSIDE) Я только что добавил пример Ринсайд который внедряет его внутрь QT.

Я мгновен main() а затем передайте ссылку на этот объект в класс, используя его. Это кажется правильной моделью, так как нам нужно убедиться, что работает только один экземпляры R (с R не является многопоточной и т. Д.-если вам нужно больше экземпляров, подумайте Rserve.

Этот пример Теперь в SVN И выглядит так на моей коробке:

enter image description here

Мне очень нравится, так как он позволяет вам играть со смесями, распространять центральное местоположение обеих рисунков и т. Д. И увидеть, в какой пропускной способности вы больше не различаете между двумя горками оценочной плотности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top