小编Moh*_*nad的帖子

从C++中的虚拟模板类继承

如何从此虚拟模板类继承,在此代码中:

// test.h
class Base {
 public:
  virtual std::string Foo() = 0;
  virtual std::string Bar() = 0;
};

template <typename T>
class Derived : public Base {
 public:
  Derived(const T& data) : data_(data) { }

  virtual std::string Foo();
  virtual std::string Bar();

  T data() {
    return data_;
  }

 private:
  T data_;
};


typedef Derived<std::string> DStr;
typedef Derived<int> DInt;

// test.cpp
template<typename T>
std::string Derived<T>::Foo() { ... }
template<typename T>
std::string Derived<T>::Bar() { ... }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用DStr或DInt时,链接器会抱怨存在未解析的外部,这些是Derived<std::string>::Foo()Derived<std::string>::Bar(),并且相同Derived<int>. …

c++ inheritance templates

3
推荐指数
2
解决办法
3799
查看次数

标签 统计

c++ ×1

inheritance ×1

templates ×1