2016-09-05 19 views
2

Rcppを使用して、フィールドにRcpp::Functionを持つC++クラスを作成したいと考えています。例:Rcpp :: Functionメンバーを持つC++クラス

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

残念ながら、上記のコードは機能しません。コンパイルすると、次のエラーが報告されます:私はmyClassのコンストラクタでmyR_funを初期化していると思うので

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

エラーレポートは、少し混乱しているのですか?私が使用することができ

この問題を回避するには、ボイドポインタ

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

を持つことであるが、これは組織的観点から次善のようです。 Rcpp::FunctionオブジェクトをC++クラスのフィールドにする適切な方法は何ですか?

答えて

4

構文では、myR_funが最初にデフォルト構成され、次にuserR_funが割り当てられます。

代わりにこれを試してみてください:この構文myR_fun

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

は直接userR_funを用いて構成されています。

+0

「やってよ!ありがとう! –

関連する問題