C++ C++;模板类中新结构的语法

C++ C++;模板类中新结构的语法,c++,class,templates,struct,C++,Class,Templates,Struct,我在成员函数定义中遇到一些代码问题 从.h文件: //This is a private type struct node { node *next; node *prev; T *o; }; .cpp文件中产生错误的代码: template <typename T> void Dlist<T>::function(T *o) { node newV = new node; .... } 模板 void Dlist::函数(T*o) { node

我在成员函数定义中遇到一些代码问题

从.h文件:

//This is a private type
struct node {
node   *next;
node   *prev;
T      *o;
}; 
.cpp文件中产生错误的代码:

template <typename T>
void Dlist<T>::function(T *o)
{
node newV = new node;
....
}
模板
void Dlist::函数(T*o)
{
node newV=新节点;
....
}
我认为这是声明结构的正确语法,我得到了一个“节点未在此范围内声明”错误

然后我试着:

Dlist<T>::node *victim;
Dlist::node*受害者;
我得到了一个“newV未在此范围内声明”错误,这让我更加困惑,因为这行本身就是一个声明

我将.cpp包含在.h文件中


非常感谢您的帮助。

new X
返回指向
X
的指针,因此您需要将调用
新节点的结果分配给
节点
,而不是
节点

template <typename T>
void Dlist<T>::function(T *o)
{
  node* newV = new node;
....
}
模板
void Dlist::函数(T*o)
{
node*newV=新节点;
....
}
请看一个例子

请注意,使用原始指针动态分配对象是相当棘手的,必然会导致内存管理错误。我建议使用或自动分配变量(非指针)

struct节点{
std::unique_ptr next;
std::唯一的ptr prev;
std::唯一的ptr o;
}; 

你能发布一些复制问题的最小代码吗?如果这个家伙连指针都不知道,他根本无法管理自己的内存。没有智能指针->向下投票。@DeadMG我正试图解决眼前的问题。我将添加一些关于智能指针的内容。
struct node {
  std::unique_ptr<node>   next;
  std::unique_ptr<node>   prev;
  std::unique_ptr<T>      o;
};