1

我收到一个链接错误,我不确定它指的是什么。

这是错误

1>Main.obj : 错误 LNK2019: 未解析的外部符号“public: void __thiscall BinaryHeap,class std::allocator > >,class Comp,class std::allocator > > >::insert(class Item,class std::allocator > > const &)" (?insert@?$BinaryHeap@V?$Item@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@V ?$Comp@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@@@QAEXABV?$Item@V?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@@@@Z) 在函数“public: void __thiscall PriorityQueue,class std::allocator > >::insertItem(int,class std: :basic_string,class std::allocator > const &)" (?insertItem@?$PriorityQueue@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@ @QAEXHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

代码相当长,但是如果你想让我发布它,我会的。

谢谢

4

3 回答 3

5

它是一个模板函数,BinaryHeap<T, Comp>::insert(T const &). 您的 MSVC 编译器不支持可导出模板(很少支持)。确保您在头文件而不是 .cpp 文件中定义(不仅仅是声明)此函数。

于 2010-04-18T02:31:23.250 回答
3

这是说您正在调用BinaryHeap::insert,但没有链接该函数的实现。您必须有头文件,否则当您尝试调用未声明的函数时编译器会失败;您是否忘记链接 BinaryHeap 库?

于 2010-04-18T02:17:15.007 回答
2

您是否尝试定义模板化 BinaryHeap 类?你是在 .h 文件中声明插入方法并在 .cc 文件中定义它吗?

这不适用于大多数编译器。您需要定义模板函数,以便它们在编译时可用,而不仅仅是链接时。将函数定义移动到头文件。

于 2010-04-18T02:30:58.063 回答