[英]encapsulate C++ templates
I try to implement a template with an explicit template specification.我尝试使用显式模板规范来实现模板。 The template and its implementation is shown bellow:模板及其实现如下所示:
template <typename T>
class MyClass {
private:
T data;
size_t size;
public:
MyClass();
~MyClass();
uint32_t getSize();
T getData();
void setData(T value);
};
template <class T>
MyClass<T>::MyClass()
{
size = sizeof(T);
}
template <>
MyClass<std::string>::MyClass()
{
size = 0;
}
/* and so on */
Now I have an issue when my explicit declaration contains also a class template.现在,当我的显式声明还包含一个类模板时,我遇到了一个问题。 Let say, i would create an explicit template specialization of a vector (containing any primitive type like int, char, float,...) and store the element site in the size
variable.假设,我将创建一个向量的显式模板特化(包含任何原始类型,如 int、char、float 等)并将元素站点存储在size
变量中。
template <??>
MyClass<std::vector<?>>::MyClass()
{
size = sizeof(?);
}
How could I do this?我怎么能这样做?
You should specialize class, not methods:您应该专门研究类,而不是方法:
#include <string>
#include <vector>
template <typename T>
class MyClass {
private:
T data;
size_t size;
public:
MyClass();
~MyClass();
uint32_t getSize();
T getData();
void setData(T value);
};
template <class T>
MyClass<T>::MyClass()
{
size = sizeof(T);
}
template <>
MyClass<std::string>::MyClass()
{
size = 0;
}
template<class T>
class MyClass<std::vector<T>>
{
MyClass();
T data;
size_t size;
};
template<class T>
MyClass<std::vector<T>>::MyClass()
{
size = sizeof(T);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.