模板类中新结构的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没有在这个范围内声明"的错误,这让我更加困惑,因为这行本身就是一个声明。
我将.cpp包含在.h文件中。
感谢您的帮助。
new X
返回指向X
的指针,因此需要将对new node
的调用结果分配给node*
,而不是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;
};
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- C++概念:如何使用'concept'检查模板化结构的属性?