我尝试给函数一个函子来更灵活地调整我班级中的某些事情。 这是一些代码:
struct BC {
real operator()(real x, real y, real z) {
return sin(2 * M_PI * x) * sin(2 * M_PI * y) * sin(2 * M_PI * z);
}
};
int main() {
// stuff
subgrid.initBC(BC(), subdomain);
}
以下是文件Subgrid.cpp中的initBC的定义:
template <class Fun>
void Subgrid::initBC(Fun f, const Subdomain& subdomain) {
f(1, 2, 3); // more or less, just simple usage like that
}
声明,在Subgrid.hpp中:
template <class Fun> void initBC(Fun f, const Subdomain & subdomain );
在尝试编译和链接时,这是我收到的错误消息
Undefined symbols:
"void Subgrid::initBC<BC>(BC, Subdomain const&)", referenced from:
_main in main.o
ld: symbol(s) not found
我不知道什么在这里不起作用。我认为这可能是由于一些模板问题,但我看不出它可能是什么。任何帮助表示赞赏,我希望代码片段足够,所有其他代码应该与我认为的这个问题无关