У меня есть класс C ++, который я использую, и в нем есть функция, которая не отображается, когда я смотрю на файл .o с помощью «nm --demangle», и функция отсутствует, когда программа пытается запустить, даже если все работает нормально.
Заголовок выглядит так:
#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_
Я чувствую, что упускаю что-то простое здесь, но не могу сказать, что это такое.