我是C ++编程的新手,我正在尝试用C ++实现一个场景图。
应该有一个Node类,它是超类(和一个抽象类)和一些子类,如Geometry,Group,Transformation等。我需要实现一个图,其中子类对象中的任何一个都可以是节点。每个节点可以有一个或多个子节点。 (子类中有常用的方法和属性以及不同的方法和属性。)
我需要创建一个图表,我可以添加,删除节点并执行常用方法,无论其类型如何。
任何人都可以分享任何想法或方法来实现这样的图表吗?
编辑:这是我作品的样本定义。 (我只添加标题内容。但如果需要实现,我会提供。)
node.h
using namespace std;
#include <cstdio>
#include <string>
#include <vector>
#ifndef NODE_H
#define NODE_H
class Node{
public:
Node();
virtual ~Node() = 0;
Node(string name);
string getName();
void setName(string name);
vector<Node*> getChildrenNodes();
size_t getChildNodeCount();
Node* getChildNodeAt(int i);
void setChildernNodes(vector<Node*> children);
void addChildNode(Node* child);
virtual string getNodeType()=0; // to make this class abstract
protected:
string name;
vector<Node*> children;
};
#endif
geometry.h
class Geometry : public Node {
public:
Geometry();
~Geometry();
string getNodeType();
// Method overrides and other class specific methods.
};
graph.h
#include "node.h"
class Graph{
public:
Graph();
~Graph();
void addNode(Node* parent,Node* child);
void addNode(Node* child);
Node* getRoot();
private:
Node* root;
};
这是我的main.cpp
#include <cstdio>
#include <stdio.h>
#include <iostream>
#include "node.h"
#include "graph.h"
int main(){
Graph sg;
Geometry g1;
sg.addNode(g1); // error: no matching function for call to ‘Graph::addNode(Geometry&)’
return 0;
}
如果可以,请说明我出错的地方。