0

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

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

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

4

0 回答 0