链接器生成未定义的引用派生模板化类实例

时间:2014-11-26 16:46:43

标签: templates linker abstract-class

我有以下抽象类 -

#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有人告诉我他们要去做什么???

0 个答案:

没有答案