J'ai une classe C++ que j'utilise, et il y a une fonction qui n'apparaît pas quand je regarde le fichier .o avec `nm --demangle ', et la fonction est manquante quand le programme essaie de s'exécuter , même si tout va bien.Pourquoi une fonction n'est pas définie dans le fichier .o pour cette classe C++?
L'en-tête ressemble à:
#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
et la fonction addItem est implémenté comme
template <class T>
void Collection<T>::addItem(T* item)
{
items.push_back(item);
}
L'erreur que je reçois est de lorsque je tente d'hériter de cette classe dans un autre et présente à runtime: undefined symbol: _ZN10CollectionIN4NJSE5TrackEE7addItemEPS1_
Je sens qu'il me manque quelque chose de simple ici, mais je ne peux pas dire de quoi il s'agit.
Avez-vous spécifié la bibliothèque lors de la liaison? – t0mm13b