Jam*_*ens 5 templates nested class c++11
我正在尝试编写C ++ 11链表实现,链表是模板类,其节点是嵌套类,如下所示:
template <typename T>
class LinkedList {
public:
class Node;
std::shared_ptr<Node> listSearch(const T &input) const;
private:
std::shared_ptr<Node> head;
std::shared_ptr<Node> tail;
};
template <typename T>
class LinkedList<T>::Node {
private:
T data;
std::shared_ptr<Node> next;
}
Run Code Online (Sandbox Code Playgroud)
我假设Node类本身不是模板,但是当LinkedList实例化时,它也会创建Node类。
当我尝试如下定义listSearch函数时,出现错误:“模板类型参数的模板参数必须是类型;您忘记了'typename'吗?”。有人可以解释什么地方不对吗?
template <typename T>
std::shared_ptr<LinkedList<T>::Node> LinkedList<T>::listSearch(const T &input) { ... }
Run Code Online (Sandbox Code Playgroud)
编辑:
好的,所以我重新编译了gcc,错误消息更加清晰了。它需要以下内容:
std::shared_ptr<typename LinkedList<T>::Node> LinkedList<T>::listSearch(const T &input) const { ... }
Run Code Online (Sandbox Code Playgroud)
为什么在LinkedList :: Node之前需要类型名?这种类型不是很明显吗?
看这里
template <typename T>
std::shared_ptr<typename LinkedList<T>::Node> LinkedList<T>::listSearch(const T &input) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2779 次 |
| 最近记录: |