我有以下抽象类 -
#ifndef FOO_H
#define FOO_H
template <typename T>
class FOO{
public:
virtual void bar();
protected:
T foobar;
};
#endif
然后我从这个类派生出来 -
#ifndef BAH_H
#define BAH_H
#include "foo.h"
template <typename T>
class BAH : public FOO<T>{
public:
BAH();
void bar(T const &);
};
#endif
////////////////////////////////////////////////
//Class Methods
////////////////////////////////////////////////
template<class T>
void BAH<T>::bar(T const &)
{
}
然后我创建主
#include "bah.h"
int main(int argc, char **argv)
{
FOO<int> *i_bah = new BAH<int>();
}
和编译 %gcc main.cpp -I ./
我从链接器那里得到了这个 -
/tmp/ccQmTxZi.o:在函数main':
main.cpp:(.text+0x16): undefined reference to
operator new(unsigned long)&#39;
main.cpp :(。text + 0x23):未定义引用BAH<int>::BAH()'
main.cpp:(.text+0x46): undefined reference to
operator delete(void *)&#39;
/tmp/ccQmTxZi.o:(.eh_frame+0x13):对__gxx_personality_v0&#39;的未定义引用
collect2:ld返回1退出状态
Caan有人告诉我他们要去做什么???