模板和访问权限
Templates and access
我已经阅读了大量有关如何有效使用模板的指南,但是似乎没有一个回答这个问题。它们似乎都访问了类中的节点,仅此而已。
例如,我有一个双向链表。该列表包含一个节点:
template<class T>
struct TNode
{
T Data;
TNode* pNext;
TNode* pPrev;
};
现在我正在尝试使数据可从任何地方访问,例如:
TNode* pNode = m_VertexList.GetFirstElement();
然而,我尝试过的每一种方式,我最终都不得不以某种方式投射它:
TNode<CObject*>* pNode = m_VertexList.GetFirstElement<CObject*>();
//I can't remember at this point if this is the exact syntax, but you get the idea
现在,虽然这不是一个很大的问题,但它并不理想。
有没有办法让它使第一行正确返回类型而无需指定它?
这是我得到的错误:
1>...error C2955: 'TNode' : use of class template requires template argument list
在 pastebin 中是整个节点结构和 dllist 类:http://pastebin.com/awkq9rcq
任何帮助将不胜感激:)
你需要类似auto node = m_VertexList.GetFirstElement();
的东西m_VertexList
,因为它应该是一个类模板。但是,您可以将节点的typedef
添加到列表类中,也可以使用它:
template <typename T>
struct List
{
typedef Node<T> node_type;
typedef Node<T>* node_ptr_type;
node_ptr_type GetFirstElement() { return first_; }
node_ptr_type first_;
....
};
然后
typedef List<Cobject> CObjectList
CObjectList l;
auto n0 = l.GetFirstElement();
CObjectList::node_ptr_type n1= l.GetFirstElement();
完成本练习后,您可能需要查看std::list
以获取实现良好的双向链表类模板的示例。
相关文章:
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 为什么我在空指针错误(链表)中获取成员访问权限
- 为什么"delete"操作员给我访问权限冲突
- 从根权限进程创建可访问的文件
- 父级的子属性 - 访问权限
- 从C++获得对在python中创建的C++类的访问权限
- 威纳派读取自定义文件或文件夹的所有访问权限
- 授予另一个类对特定方法的访问权限
- 链接 boost 库时"Error while loading shared libraries"引发的,除了我无法使用 root 访问权限来修复它
- 正确的友元定义,以授予 std::map 对私有默认构造函数的访问权限
- TOCTTOU - 在处理文件之前使用访问权限
- 如何通过指针仅向结构的某些成员提供可变访问权限
- main() 对连续运行的线程中的编辑值具有只读访问权限 - C++
- 如何使用 c++ 创建对"everyone"具有共享访问权限的文件夹
- 嵌套类嵌套类的访问权限
- 为什么继承的受保护操作员=()有公共访问权限
- Lambda 函数,用于调用有权访问类成员的成员函数
- 为什么拥有不同访问控制权限的成员的工会不是标准布局
- 获取从基类指针到具有不同类型的两个派生成员变量的访问权
- 拒绝访问nt权限本地服务