繁体   English   中英

带有模板虚拟方法的C ++链接器错误

[英]C++ Linker error with templated virtual method

我有一个模板化的接口和一个模板化的实现。 我也有一种方法,该方法将接口的特殊化作为参数。 我收到一个链接器错误:

“找不到用于建筑的符号...

这是为什么? 实现此目的的正确方法是什么:可以使用各种类型的接口,可以使用各种类型的实现以及将专门针对给定类型的接口作为参数的方法?

下面的示例只是一个最小的示例,我的实际类具有不同的功能。

谢谢

#include <iostream>

template<class T>
class IStore{
public:
  virtual T get() = 0;
  virtual void set(T t) = 0;
};

template<class T>
class SimpleStore : public IStore<T>{
public:
  T get() override{    return value;   }
  void set(T t) override{    value = t;  }
private:
  T value;
};

void Print(IStore<double> mydouble){  std::cout<<mydouble.get(); }

int main(int argc, const char * argv[]) {
  SimpleStore<double> one;
  one.set(1.0);
  Print(one);
  return 0;
}

我发现您的代码存在一个主要问题:您将抽象类用作值参数。 这会导致各种各样的坏事。 实际上,这可能是您要问的问题的根源,但是我不确定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM