函数头:(模板化外部类地图具有内部类的Iterator)未定义参考模板CONST&功能
Iterator insert(const std::pair<const T1, T2>&);
功能实现:
template<typename T1, typename T2>
typename Map<T1,T2>::Iterator insert(const std::pair<const T1, T2> &p)
代码调用插入功能:
std::pair<int,char>p = std::make_pair(5, 'z');
mymap3.insert(p);
使用g ++编译-g -std = C++ 11,错误:
In function `main':
testmap.cpp:535: undefined reference to
Map<int, char>::insert(std::pair<int const, char> const&)'
collect2: error: ld returned 1 exit status
为什么编译器插入承担人的定义是现在(对常量&),而不是我的(常量对&)的定义是有区别吗?我是否不恰当地称呼它?我很困惑。是的,这是上课,我们正在重新实施地图。所以函数定义是一个给定的,我只需要找出如何调用它并使其工作。
'const T&'和'T const&'是一样的。你是在'.cpp'文件中定义函数吗? – juanchopanza
所有这些代码都在同一个.cpp – user1449870
你是否在需要的地方包含'.cpp'?实际上,只需发布一个简单的测试用例,可以很容易地再现问题。如果代码真的在'.cpp'中,你不会得到链接器错误。 – juanchopanza