我有一个libbcd.so从C源代码生成的共享库。我也有一些接口代码Rinterface.h, Rinterface.cpp,如下所示:
Rinterface.h:
#pragma once
#include <R.h>
#include <Rcpp.h>
extern "C" {
#include "bcd.h"
}
void call_bcd();
Run Code Online (Sandbox Code Playgroud)
Rinterface.cpp
#include "Rinterface.h"
// [[Rcpp::export]]
void call_bcd() {
mm_problem* pr = mm_problem_alloc();
bcd_vars* vars = bcd_vars_alloc();
bcd(pr, vars);
}
Run Code Online (Sandbox Code Playgroud)
当mm_problem_alloc(), bcd_vars_alloc(), bcd(mm_problem*, bcd_vars*)来自所有功能libbcd.so,并mm_problem和bcd_vars来自用户定义的类型libbcd.so。
我创建了一个包,其中Rcpp.package.skeleton("bcd")将带有以下Makevars的Rinterface文件放在src文件夹下
PKG_CPPFLAGS=-I/usr/local/lib/R/site-library/Rcpp/include/ -I/path/to/bcd/headers/
PKG_LIBS=-L/path/to/bcd/library/file -lbcd
Run Code Online (Sandbox Code Playgroud)
R CMD SHLIB Rinterface.cpp R CMD build . …我的问题:我正在尝试重写赋值运算符以指向两个不同的类.这是一个例子:
dc.h:
#ifndef DC_H_
#define DC_H_
#include "ic.h"
class dc {
double d;
char c;
public:
dc(): d(0), c(0) { }
dc(double d_, char c_): d(d_), c(c_) { }
dc* operator=(const ic* rhs);
~dc() { }
};
#endif /* DC_H_ */
Run Code Online (Sandbox Code Playgroud)
class ic.h:
#ifndef IC_H_
#define IC_H_
class ic {
int i;
char c;
public:
ic(): i(0), c(0) { }
ic(int i_, char c_): i(i_), c(c_) { }
~ic() { }
};
#endif /* IC_H_ */
Run Code Online (Sandbox Code Playgroud)
dc.cpp:
#include "dc.h"
dc* …Run Code Online (Sandbox Code Playgroud)