使用模板类定义内联声明变量
Declare variable inline with template class definition
我有一个这样的链表结构:
template<class T>
class LinkedList {
private:
template<class U>
struct Node {
U data;
Node<U> *link;
};
Node<T> *head;
};
理想情况下,我想做的是将内部类定义与head
声明合并,如下所示:
// Is something like this possible?
template<class U>
struct Node {
U data;
Node<U> *link;
} head; // Put head right here somehow, while also specifying the type parameter.
因为创建Node<U>
结构的全部意义在于定义head
.是否有可能将这两者联系在一起?
只需保持占位符T
并删除不必要的U
:
template<class T>
class LinkedList {
private:
struct Node {
T data;
Node *link;
};
Node *head;
};
无论出于何种原因,您都可以将它们连接在一起。您只需要删除多余的template<class U>
即可。
template<class T>
class LinkedList {
private:
struct Node {
T data;
Node* link;
}* head;
};
我更喜欢你的第一个例子,但你不需要像那里那样的两个模板参数。
template<class T>
class LinkedList {
private:
struct Node {
T data;
Node *link;
};
Node *head;
};
我认为这比你的第二个例子要干净得多。例如,您现在可以在LinkedList
类上编写search
和insert
函数。在您的另一个示例中,它们必须是外部函数。
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]