0

我有一个具有签名的函数:

int alarmCreate(const std::string& familyCode,  std::vector<std::pair<std::string,boost::any> >& alarmparameters, const std::string& description);

可以看出,它有三个参数;字符串,向量,字符串。

但是当我构建我的项目时,我收到了一个错误:

/root/projects/test/test.cpp:152:未定义的引用

 redisHandler::alarmCreate(std::string const&, std::vector<std::pair<std::string, boost::any>, std::allocator<std::pair<std::string, boost::any> > >&, std::string const&)

我看到类型为 std::allocator 的第四个参数,我不明白它来自哪里。

你们知道吗,为什么我的函数中有第四个参数?

编辑 :: 原来有 3 个参数。但我仍然很好奇为什么我会收到错误。此函数位于静态库中。当我用“nm”搜索这个库时,我看到我的 func 存在(如下所示)。你知道我可能会错过什么吗?

[root@ ~/projects/test/test]# nm ../../lib/libredis.a |grep alarmCreate

000000000000073c T_ZN12redisHandler11alarmCreateERKSsRSt6vectorISt4pairISsN5boost3anyEESaIS6_EES1_

4

1 回答 1

4

它是vector. 每个标准容器都有一个分配器,它有一个默认值,所以你不需要担心这个。

您的方法可能已声明但未定义。

于 2013-09-06T13:12:25.453 回答