0
我有一个模板化的接口和模板实现。我也有一个方法将接口的专门化作为参数。我收到一个链接器错误:C++链接器错误与模板虚拟方法
"symbol(s) not found for architecture...
这是为什么?实现这个目标的正确方法是什么:一个可以与各种类型一起工作的接口,一个可以与各种类型一起工作的实现,以及一个接受专用于给定类型的接口的方法?
下面的例子只是一个简单的例子,我的实际类有不同的功能。
感谢
#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;
}
你说得对,用'打印(IStore&mydouble)'来代替'Print(IStore mydouble)'作品。我仍然不明白为什么。 –
user1188374
您正在迫使编译器尝试链接纯虚函数,以便为永远不可实例化的类创建虚拟表。它应该导致更好的错误,但无论如何。 –
我不得不阅读你的评论5次了解,但我想我明白了。谢谢! – user1188374