【发布时间】:2010-11-09 13:55:08
【问题描述】:
我有一个正在使用的 C++ 类,当我使用 `nm --demangle' 查看 .o 文件时,其中有一个函数没有显示,而当程序试图运行,即使一切正常。
标题看起来像:
#ifndef __COLLECTION_H
#define __COLLECTION_H
#include <vector>
#include "ObjectInstance.h"
using namespace std;
template <class T>
class Collection : public ObjectInstance
{
protected:
vector<T*> items;
void internalInsertAt(T* item, int index);
void internalRemoveIndex(int index);
void internalRemoveItem(T* item);
public:
virtual ~Collection();
// Specific functions for this interface
static int item(jsplugin_obj *this_obj, jsplugin_obj *function_obj, int argc,
T* internalGetItem(int index);
int getSize();
void addItem(T* item);
};
#endif
addItem函数实现为
template <class T>
void Collection<T>::addItem(T* item)
{
items.push_back(item);
}
我得到的错误是当我尝试在另一个类中继承这个类并在运行时出现:undefined symbol: _ZN10CollectionIN4NJSE5TrackEE7addItemEPS1_
我觉得我在这里遗漏了一些简单的东西,但不知道是什么。
【问题讨论】:
-
链接的时候你真的指定了库吗?