Rcpp возврат объекта указателя массива C / C ++

0

Я хочу написать свой собственный Datatype в C/C++. Я создал небольшой класс следующим образом:

#include <Rcpp.h>
using namespace Rcpp;

class Test
{
  public:
  int rows;
  int cols;

  float a[10];

  Test() {};

};


RCPP_EXPOSED_CLASS( Test )

RCPP_MODULE(mod){
  class_<Test>("Test")
    .constructor()
    .field("rows", & Test::rows )
    .field("rows", & Test::cols )
//    .field("a", & Test :: a)
    ;
}

код работает. Но теперь я хочу получить значения из a. Ive, я понимаю правильность документации, мне нужно создать функцию "как"? И верните NumericVector?

Я не понял тип SEXP, это указатель, который является "беспричинным" и может использоваться в C/C++ и R?

Теги:
rcpp

1 ответ

1
Лучший ответ

Это много элементарных вопросов.

Может быть, вам не следует начинать с модуля и класса? Как насчет

  • Вы можете переписать свой класс, содержащий std::vector<double> a.
  • Вы пишете простую функцию "init()", которая присваивает классу файло-локальную переменную (обычно указатель).
  • Вы пишете небольшие функции setter и getter, см. Атрибуты Rcpp.

После того, как несколько вещей станут более ясными, больше делайте основы, переименуйте виньетку Rcpp Modules.

  • 0
    большое спасибо, но мне нужен собственный тип данных. Если я правильно вас понял, мне нужно преобразовать массив с плавающей точкой 2dim в Rcpp :: NumericMatrix для использования в R и C ++?
  • 1
    1) В R нет float , только double . 2) C / C ++ не имеет собственного 2-го типа, поэтому каждый класс Matrix просто обеспечивает удобную индексацию. И да, я бы использовал NumericMatrix для этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню