我有一个头文件,
class CListEx
{
public:
CListEx();
~CListEx();
void InitList();
void AddList(char * msg);
private:
template <typename T>
struct MyList {
T data;
int num;
};
};
现在在Cpp文件中,
void CListEx::InitList()
{
MyList *my = new MyList();
}
这会带来错误,
类模板“ CListEx :: MyList”的E0441参数列表丢失
错误C2514'CListEx :: MyList':类没有构造函数
有什么想法吗?
我尝试过的事情:
我尝试了以下方法,但也给出了错误。
template <typename T >MyList *my = new template <typename T >MyList();
答案 0 :(得分:1)
错误消息给出了一个非常明确的原因:类模板的参数列表丢失。意思是,您应该编写一些代码,例如:
void CListEx::InitList()
{
MyList<int> *my = new MyList<int>();
}
上阅读模板。
答案 1 :(得分:0)
这是您要做什么吗?
class CListEx
{
public:
template <typename T>
void InitList();
private:
template <typename T>
struct MyList {
T data;
int num;
};
};
template <typename T>
void CListEx::InitList()
{
MyList<T> *my = new MyList<T>();
}
int main()
{
CListEx cle;
cle.InitList<int>();
}
还是您要这样做?
template <typename T>
class CListEx
{
public:
void InitList();
private:
struct MyList {
T data;
int num;
};
};
template <typename T>
void CListEx<T>::InitList()
{
MyList *my = new MyList();
}
int main()
{
CListEx<int> cle;
cle.InitList();
}
当心内存泄漏。最好使用std::unique_prt
中的<memory>
。