[英]encapsulate C++ templates
我嘗試使用顯式模板規范來實現模板。 模板及其實現如下所示:
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(?);
}
我怎么能這樣做?
您應該專門研究類,而不是方法:
#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.