链接器/继承/虚函数问题

时间:2011-03-17 06:19:45

标签: class templates inheritance linker virtual

从模板类继承有困难。
看起来像这样:

template<typename type>  
class base {  
protect:  
  ...  
public  
  ...  
  virtual bool func1(type var1);  
};  

//这个类不是模板化的,而是派生自模板类,不知道它的问题是什么

class derived : public base<type_spec_1> {  
protected:  
  ...   
public:  
  ...  
  bool func1(type_spec_1);// function I wish to override;  
};

//在.cpp中,我尝试调整函数的范围,它编译但不链接

bool derived::func1(type_spec_1 type){ return false; };  

链接器以这种格式给出错误:LNK2001,未解析的符号base :: func1(type_spec_1);
就像它没有看到"derived"==base"<type_type_1>"
如果可能的话,我怎样才能为此提供正确的语法????

1 个答案:

答案 0 :(得分:1)

你不需要这样做吗?

template<typename type>  
class base {  
protect:  
  ...  
public  
  ...  
  // provide implementation to be overriden
  virtual bool func1(type var1) { return (bool) 0; } 
};  

因为class derived : public base<type_spec_1>derived来自某个类型base<type_spec_1>,但base<type_spec_1>的类型定义尚未完全实现?