带有映射参数的函数需要其他参数
Function with map parameter needs additional arguments?
我有这段代码:
std::map< int, std::pair<int, int> > m;
for ( std::vector<Pass*>::const_iterator passIt = it->GetPasses().begin(); passIt != it->GetPasses().end(); ++passIt )
{
m.insert( std::make_pair((*passIt)->GetType(), (*passIt)->GetAgeRange()) );
}
--> ages.push_back( new std::istringstream(SerializeAges(m)) ); <--
标记的行会产生此错误:
undefined reference to `SerializeAges(std::map<int, std::pair<int, int>, std::less<int>,
std::allocator<std::pair<int const, std::pair<int, int> > > > const&)'
声明:
static std::string SerializeAges(const std::map< int, std::pair<int, int> > &ageMap);
定义:
inline std::string SerializeAges(const std::map< int, std::pair<int, int> > &ageMap)
{
}
其他被调用函数的签名:
std::pair<int, int> GetAgeRange() const;
我不知道这里出了什么问题。
编辑:抱歉,Type
是一个枚举,所以GetType()
返回的内容被隐式转换为整数。
从评论来看,它似乎是一个类成员。在这种情况下,定义需要使用限定名称:
inline std::string WhateverTheClassIsCalled::SerializeAges(const std::map< int, std::pair<int, int> > &ageMap)
^^^^^^^^^^^^^^^^^^^^^^^^^^
如果没有它,定义将声明一个具有相同名称的单独非成员函数,并且该成员将保持未定义状态。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 如何从其他功能C++访问参数?
- C++ 默认参数使用其他参数
- 如何将将参数包作为参数传递给其他模板类的模板类?
- lambda 作为接受其他参数的参数的初始化顺序
- 如何在其他类中使用参数化构造函数制作类的对象?
- 模板参数包如何具有其他尾随参数?
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- 了解'this'或其他参数是否为右值
- 使用其他模板类型参数作为要在函数签名中使用的类型别名声明
- 推断大多数模板对象的参数,但在调用模板函数时对其他对象显式
- 当模板类使用参数包时,如何传递其他模板参数
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 递归回文检查,不使用向量、大小或其他参数
- 将成员函数作为参数传递给其他成员函数 (C++ 11 <function>)
- 依赖于其他模板参数的模板参数
- 传递多个参数的功能,该函数将类包含到其他函数
- 将指针类方法作为参数传递给其他类方法C
- 如果创建支持返回可变参数类型列表的通用模板 API,我应该使用 std::tuple 还是其他东西?
- 如何根据枚举参数返回其他类型