【发布时间】:2012-06-19 10:47:25
【问题描述】:
我有以下简单的模板代码:
#ifndef CLUSTER_H
#define CLUSTER_H
#include <iostream>
#include <vector>
template <typename T, size_t K>
class Cluster
{
public:
void Print() const;
private:
std::vector<T> objects;
};
template <typename T, size_t K>
void Cluster<T,K>::Print() const
{
for (int i=0; i<objects.size(); i++)
{
T curr=objects[i];
std::cout << curr << " ";
}
std::cout << std::endl;
}
#endif
由于某种原因,我收到以下错误:“未定义对'Cluster<int, 5u>::Print() const'的引用。这可能是什么原因?
谢谢!
【问题讨论】:
-
您能否提供一些产生错误的代码,例如。调用 Cluster
::Print? -
ideone.com/cMTih 为我工作。
-
编辑您的原始评论将是包含格式良好的代码的最佳方式;-)(另外,这不是错误的最小示例,因为它有大量对您没有的函数的引用' t 提供给我们)。此外,注释掉
FillVector和KNN调用并定义cluster_size给我留下了构建良好的代码...... -
再想一想...您的
Cluster定义真的都在同一个头文件中,还是您的Print函数体在CPP 文件中?因为您会遇到模板实例化问题,因为您的模板类的一部分分散在翻译单元中。如果您不小心的话。 -
–1 表示缺少 SSCCE。