带有模板和不同模板成员变量的C++类



如果标题没有准确描述我要做的事情,我深表歉意。

我正在研究一个基于双链表原理的节点/场景树系统。我的基类Node有成员函数getParentgetChild,它们可以返回它上面和下面的相应节点。我还实现了子类GameObjectScene,它们是每个子类都有额外成员的节点。

我试图实现的想法是,我可以实例化一个Scene对象,它是Node<Scene>,然后将其子对象或父对象设置为其他Node类、Scene子类或GameObject子类,并可以访问它们各自的所有成员和函数。这是我目前的实现

template<class classType>
class Node
{
private:
std::string name;
//Hypothetical thing I want to do. Parent or child can be a Node of any type
template<class T>
Node<T>* parent;
template<class T>
Node<T>* child;
public:
Node() {
// Constructor things...
};

// Return the correct class type for the child or parent

Node* getChildNode() { return child; };
Node* getParentNode() { return parent; };

// Setter functions can accept a node of any type
template<class T>
void setChildNode(Node<T> *new_child){
child = new_child;
};
template<class T>
void setParentNode(Node<T> *new_parent){
parent = new_parent;
};
}
class Scene : public Node<Scene>
{
public:
Scene();
void foo();
};
class GameObject : public Node<GameObject>
{
public:
GameObject();
void bar();
};

这些类有望像这样使用:

Scene* root = new Scene();
GameObject* platform = new GameObject();
platform->setParentNode(root); //"error: cannot convert ‘Node<Scene>*’ to ‘Node<GameObject>*’ in assignment"
platform->getParentNode().foo();  //Call function specific to a Scene class

有没有一种方法可以用我目前拥有的东西实现这一功能?

C++中的模板不能替代OO。模板提供编译时多态性;OO运行时。你需要后者,所以你需要一个公共基类。

相关内容

  • 没有找到相关文章

最新更新