继承类的RCPP_模块

继承类的RCPP_模块,r,rcpp,R,Rcpp,我在尝试使用继承类的模块时遇到问题。基本上,我不能编译这个部分 RCPP_MODULE(PACE){ using namespace Rcpp; class_<FPCAreg>("FPCAreg") .constructor<List, List, double, double, int, bool, bool>() .field("n", &FPCAreg::n) ; } RCPP\u模块

我在尝试使用继承类的模块时遇到问题。基本上,我不能编译这个部分

RCPP_MODULE(PACE){
    using namespace Rcpp;
    class_<FPCAreg>("FPCAreg")
        .constructor<List, List, double, double, int, bool, bool>()
        .field("n", &FPCAreg::n)
            ;
}
RCPP\u模块(PACE){
使用名称空间Rcpp;
类(“FPCAreg”)
.constructor()
.field(“n”,&FPCAreg::n)
;
}

这里,FPCAreg是基于FPCA类的继承类,“n”在FPCA中定义。无论我使用“.field”(“n”、&FPCAreg::n)”还是“.field”(“n”、&FPCA::n)”。当我使用“.field”(“n”、&FPCAreg::n)”时,错误消息是“调用blablabla时没有匹配的函数,“.field”(“n”、&FPCA::n)”是相同但不同的类名。有什么建议吗?谢谢。

您只能声明实际类中的字段和方法。但是,您可以做的是公开基类和派生类,并在
derives
中提示它们之间的继承

以下是一个例子:

#include <Rcpp.h>
using namespace Rcpp;

class Base {
public:
    Base(double x_) : x(x_){}
    double x; 
} ;

class Derived : public Base {
public:
    Derived(int y_) : Base(2.0), y(y_){} 
    int y ;
} ;

RCPP_MODULE(PACE){
    class_<Base>("Base")
        .constructor<double>()
        .field("x", &Base::x) 
    ;
    class_<Derived>("Derived")
        .derives<Base>("Base")
        .constructor<int>()
        .field("y", &Derived::y)
    ;
}
#包括
使用名称空间Rcpp;
阶级基础{
公众:
基(双x):x(x){
双x;
} ;
派生类:公共基{
公众:
派生的(inty_u):基(2.0),y(y_u){
int-y;
} ;
RCPP_模块(PACE){
类(“基”)
.constructor()
.field(“x”、&Base::x)
;
类(“派生”)
.衍生(“基础”)
.constructor()
.field(“y”、&派生::y)
;
}
我从R得到这个:

> obj <- new(Derived, 10L)
> obj$y
[1] 10
> obj$x
[1] 2
>obj obj$y
[1] 10
>obj$x
[1] 2

您在此处和rcpp-devel上交叉发布。那是糟糕的形式。选择一个,或者另一个。我在名单上回答了。[不,我没有投反对票。]我得到了答复。谢谢。通常的表达方式是接受答案。