【发布时间】:2020-02-08 16:07:34
【问题描述】:
我尝试使用明确的模板规范来实现模板。模板及其实现如下所示:
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 */
当我的显式声明还包含一个类模板时,我遇到了一个问题。比方说,我会创建一个向量的显式模板特化(包含任何基本类型,如 int、char、float 等)并将元素站点存储在 size 变量中。
template <??>
MyClass<std::vector<?>>::MyClass()
{
size = sizeof(?);
}
我该怎么做?
【问题讨论】:
-
题外话:尽可能使用初始化列表并避免在构造函数体内进行初始化;所以,在你的情况下,
template <class T> MyClass<T>::MyClass() : size{sizeof(T)} {} -
哦,感谢您的意见。是的,将它们放入初始化列表是有意义的。我在以下位置找到了更多信息:stackoverflow.com/questions/9903248/…