C++ 定义C+;时XCode中的链接错误+;从模板化类继承的类
以下是文件的内容。首先是模板类: 在.h文件中:C++ 定义C+;时XCode中的链接错误+;从模板化类继承的类,c++,xcode,class,templates,inherited,C++,Xcode,Class,Templates,Inherited,以下是文件的内容。首先是模板类: 在.h文件中: template <class T> class templatedClass { public : templatedClass(T val); ~templatedClass() {} void writeV(); T v; }; class inheritedClass : public templatedClass<float> { public :
template <class T>
class templatedClass
{
public :
templatedClass(T val);
~templatedClass() {}
void writeV();
T v;
};
class inheritedClass : public templatedClass<float>
{
public :
inheritedClass(float val);
~inheritedClass() {}
void write();
};
模板
类模板类
{
公众:
模板类(T val);
~templatedClass(){}
无效写入();
电视
};
在.cpp文件中:
template <class T>
templatedClass<T>::templatedClass(T val)
{
v = val;
}
template <class T>
void templatedClass<T>::writeV()
{
std::cout << v << std::endl;
}
inheritedClass::inheritedClass(float val)
: templatedClass<float>(val)
{
}
void inheritedClass::write()
{
writeV();
}
模板
templatedClass::templatedClass(T val)
{
v=val;
}
模板
void templatedClass::writeV()
{
std::cout您有一个缺少模板类实例化的问题。要解决它,您应该将模板实现代码放在头文件中。我的意思是,这部分:
template <class T>
templatedClass<T>::templatedClass(T val)
{
v = val;
}
template <class T>
void templatedClass<T>::writeV()
{
std::cout << v << std::endl;
}
模板
templatedClass::templatedClass(T val)
{
v=val;
}
模板
void templatedClass::writeV()
{
我不能谢谢你,马丁!它起作用了!
template <class T>
templatedClass<T>::templatedClass(T val)
{
v = val;
}
template <class T>
void templatedClass<T>::writeV()
{
std::cout << v << std::endl;
}