作为函数参数的Functor失败

时间:2013-04-01 13:42:43

标签: c++ function functor argument-passing

我尝试给函数一个函子来更灵活地调整我班级中的某些事情。 这是一些代码:

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

我不知道什么在这里不起作用。我认为这可能是由于一些模板问题,但我看不出它可能是什么。任何帮助表示赞赏,我希望代码片段足够,所有其他代码应该与我认为的这个问题无关

0 个答案:

没有答案