gpt4 book ai didi

lambdas 的 C++ vector - undefined reference

转载 作者:行者123 更新时间:2023-11-28 01:49:23 24 4
gpt4 key购买 nike

我试图在 lambda 中包装几个构造函数,以便将它们存储在一个 vector 中,然后循环遍历它:

using move_constructor = std::function<Move*(Site,vector<Move*>*, int)>;

vector<move_constructor> diff_plane_list = {
[](Site p_site, vector<Move*>* move_list, int latLen) {
return new Diffuse_inplane_px(p_site, move_list, latLen);
},
[](Site p_site, vector<Move*>* move_list, int latLen) {
return new Diffuse_inplane_mx(p_site, move_list, latLen);
},
...
}

但是,当尝试使用 g++-5.3 对其进行编译时,我收到了 vector 中每个项目的以下错误消息:

/tmp/ccc2A87Z.o: In function `{lambda(std::tuple<int, int, int>, std::vector<Move*, std::allocator<Move*> >*, int)#1}::operator()(std::tuple<int, int, int>, std::vector<Move*, std::allocator<Move*> >*, int) const':
All_moves.cc:(.text+0x5e): undefined reference to `Diffuse_inplane_px::Diffuse_inplane_px(std::tuple<int, int, int>, std::vector<Move*, std::allocator<Move*> >*, int)'

所以 vector<Move*>*以某种方式转换为 vector<Move*, std::allocator<Move*> >* ?我应该如何正确执行此操作?有没有更好的方法来遍历构造函数列表并将指向所创建对象的指针存储在 vector 中?

最佳答案

“ undefined reference ”:您没有提供指定的 Diffuse_inplane_px 构造函数的定义。

提供一个并确保它链接到项目。

关于lambdas 的 C++ vector - undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43629319/

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