Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 链接器生成未定义的引用派生模板类实例-代码更新和修复_Class_Templates_Interface_Virtual_Linker Errors - Fatal编程技术网

Class 链接器生成未定义的引用派生模板类实例-代码更新和修复

Class 链接器生成未定义的引用派生模板类实例-代码更新和修复,class,templates,interface,virtual,linker-errors,Class,Templates,Interface,Virtual,Linker Errors,我有以下抽象类- #ifndef FOO_H #define FOO_H template <typename T> class FOO{ public: virtual void bar(); protected: T foobar; }; #endif \ifndef FOO\H #定义FOO_H 模板 福班{ 公众: 虚空条(); 受保护的: T foobar; }; #恩迪夫 然后我从这个类派生- #ifndef BAH_H #define BA

我有以下抽象类-

#ifndef FOO_H
#define FOO_H

template <typename T>
class FOO{

 public:
  virtual void bar();

 protected:
  T foobar;


};


#endif
\ifndef FOO\H
#定义FOO_H
模板
福班{
公众:
虚空条();
受保护的:
T foobar;
};
#恩迪夫
然后我从这个类派生-

#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 &)
{




}
#如果没有
#定义BAH_H
#包括“foo.h”
模板
BAH类:公共食品{
公众:
巴哈(){};
空杆(T常数&);
};
#恩迪夫
////////////////////////////////////////////////
//类方法
////////////////////////////////////////////////
模板
无效BAH::bar(T常数&)
{
}
然后,我创建main

#include "bah.h"

int main(int argc, char **argv)
{

  FOO<int> *i_bah = new BAH<int>();



}
#包括“bah.h”
int main(int argc,字符**argv)
{
FOO*i_bah=新的bah();
}
在编译%g++main.cpp-I时/

我现在明白了- /tmp/ccglncVU.o:(.rodata._ZTV3BAHIiE[vtable for BAH]+0x10):未定义对
FOO::bar()的引用
/tmp/ccglncVU.o:(.rodata._ZTV3FOOIiE[vtable for FOO]+0x10):未定义对
FOO::bar()的引用
collect2:ld返回了1个退出状态

您期望什么?您尚未实现
foo::bar
方法。请注意,派生类中的方法具有不同的签名aaahh。。。谢谢,谢谢。。。。。我的眼睛太累了…我完全错过了…叹气。。。