2016-09-05 2 views
2

Использование Rcpp, я хотел бы иметь возможность создать класс C++, который имеет поле Rcpp::Function для поля. Например:C++ Class с Rcpp :: Function member

class myClass{ 
    Rcpp::Function myR_fun; 
    myClass(Rcpp::Function userR_fun){ 
     myR_fun = userR_fun; 
    } 
}; 

К сожалению, приведенный выше код не работает. При компиляции, сообщается следующее сообщение об ошибке:

error: constructor for 'myClass' must explicitly initialize the member 'myR_fun' 
which does not have a default constructor 
    myClass(Rcpp::Function userR_fun){ 
    ^

Отчет об ошибке немного сбивает с толку, потому что я думаю, что я инициализируется myR_fun в конструкторе myClass?

Обходной я мог бы использовать, чтобы иметь пустой указатель

class myClass{ 
    void* vFunPtr; 
    myClass(Rcpp::Function userR_fun){ 
     vFunPtr = &userR_fun; 
    } 
}; 

, но это, кажется неоптимальным с организационной точки зрения. Каков правильный способ сделать объект Rcpp::Function полем класса C++?

ответ

4

С вашим синтаксисом myR_fun сначала сконфигурирован по умолчанию, а затем назначен userR_fun.

Попробуйте вместо этого:

class myClass { 
    Rcpp::Function myR_fun; 
    myClass(Rcpp::Function userR_fun) 
     : myR_fun(userR_fun) 
    {} 
}; 

С этим синтаксисом myR_fun непосредственно сконструированной с использованием userR_fun.

+0

Это будет «er! Благодаря! –