繁体   English   中英

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

[英]C++ Syntax for new Struct in Templated Class

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

来自.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;
....
}

我认为这是声明一个结构的正确语法,我在这个范围内没有声明“”节点“错误。

然后我尝试了:

Dlist<T>::node *victim;

而且我得到了一个“newV未在此范围内声明”的错误,这让我更加困惑,因为这条线本身就是一个声明。

我在.h文件中包含了.cpp。

任何帮助表示赞赏。

new X返回一个指向X ,所以你需要分配给调用的结果new nodenode* ,而不是一个node

template <typename T>
void Dlist<T>::function(T *o)
{
  node* newV = new node;
....
}

在这里查看示例。

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

struct node {
  std::unique_ptr<node>   next;
  std::unique_ptr<node>   prev;
  std::unique_ptr<T>      o;
}; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM