我有一个模板化界面和模板化实现。我还有一个方法,将接口的特化作为参数。我收到链接器错误:
“未找到建筑物的符号......
为什么?实现此目的的正确方法是什么:一个适用于各种类型的接口,一个适用于各种类型的实现,以及一个以特定类型的接口为参数的方法?
以下示例只是一个最小的示例,我的实际类具有不同的功能。
由于
#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;
}
答案 0 :(得分:1)
我发现您的代码存在一个主要问题:您将抽象类作为值参数。这会导致各种不好的事情。事实上,这可能是您提出的问题的根源,但我对此并不确定。