当我尝试使用继承类的模块时遇到问题。基本上,我无法编译这部分。
RCPP_MODULE(PACE){
using namespace Rcpp;
class_<FPCAreg>("FPCAreg")
.constructor<List, List, double, double, int, bool, bool>()
.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)
;
}
然后我从 R 得到这个:
> obj <- new(Derived, 10L)
> obj$y
[1] 10
> obj$x
[1] 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)