gpt4 book ai didi

c++ - Rcpp:从包含类的代码制作包

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:44 25 4
gpt4 key购买 nike

我正在使用 Rcpp 制作 R 包。这是一个显示我的设置的 MWE:

# include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp ;

class A
{
private:
std::map<int, int> m_map;

public:
void fill_map(const size_t limit)
{
for(size_t i=0; i<limit; ++i)
{
m_map[i] = i;
}
}

size_t size_map(){return m_map.size();}
};


// [[Rcpp::export]]
XPtr<A> func1(const size_t limit)
{
XPtr<A> ptr(new A(), true);
return(ptr);
}

我可以使用 sourceCpp 编译它而不会出错。但是,当我使用 RccpArmadillo 从中生成一个包时(遵循 tutorial ),编译时出现以下错误:RcppExports.cpp:20:6: error: 'A' was not declared in this scope

为什么会出现错误,如何解决?


注意:本教程适用于在不涉及类时创建包。

最佳答案

参见 Rcpp Attributes小插图:您可能需要创建一个文件 mypackagename_types.h 并定义 A。按照惯例,这个包含在生成的接口(interface)文件中,并且您的类型A 将是已知的。

一个相当简单的例子是 Rblpapi_types.h来 self 们的 Rblpapi包裹。您可以看到包含的头文件 on line 4 of the interface file RcppExports.cpp .

关于c++ - Rcpp:从包含类的代码制作包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com