【发布时间】:2012-08-07 16:42:27
【问题描述】:
基于我的问题:C++ cannot establish handle reference to 'parent' object -- circular includes or undefined type errors 我想创建一个类(称为 Node),它有两个泛型类型成员、一个指向要确定类型的父对象的泛型指针和一个泛型向量指向一组要确定类型的子对象的元素的指针。存在于双向树结构中的对象将从 Node 继承,并且可以在数据可用时在必要时填充其父成员和子成员。这是迄今为止我对 Node.h 所做的:
#include <vector>
#ifndef NODE_H_
#define NODE_H_
template<typename T> class parent{};
template<typename T2> class child{};
class Node{
private:
parent<T>* parent_ptr;
vector<child<T2>>* children_ptr;
public:
//some accessor methods will go here to get and set the parent and children
};
#endif /*NODE_H_*/
显然这不是在 C++ 中使用模板的正确方法,因为我收到错误 C2065“'T' is an undeclared identifier”和 C4430“缺少类型说明符 - 假定为 int”错误。我在这里找到了一些关于创建模板类和函数的有用文档:http://www.cprogramming.com/tutorial/templates.html 但该教程和我能找到的任何其他文档似乎都没有涵盖使用模板在非模板类中声明通用类成员;我相当确定这(或类似的东西)是我需要为我的用例做的,那么在标准 C++ 类中声明和使用泛型成员变量的正确方法是什么?
【问题讨论】:
-
您似乎对 C++ 不太确定。我建议在处理模板之前先很好地掌握基本语言。在这里,您可能应该先为某些特定类型编写此代码,然后再使其成为通用类型。
标签: c++ templates generics polymorphism