我有一个通用树的基类Node:
class Node {
public:
Node() {
parent = NULL;
name = "";
rule = NULLRULE;
childs = std::vector<Node*>();
};
void addChild(Node* child){
childs.push_back(child);
child->setParent(this);
};
void setParent(Node* p) {
this->parent = p;
}
virtual ~Node(){
if (childs.size() == 0) return;
// remove duplicate childs
// since we allow having same child.
std::sort(childs.begin(), childs.end());
childs.erase(std::unique(childs.begin(), childs.end()), childs.end());
for(unsigned int i = 0; i < childs.size(); i++) {
delete childs[i];
}
}
我已经派生了类NodeSquare,NodeCircle等...所有节点在以下类中形成了一个树:
class Tree {
Tree() {};
~Tree() {
delete root;
};
void BFS(){};
etc...
Node* root;
}
如何为Tree类定义复制构造函数?我通过引用传递树,这就是我需要复制构造函数的原因......
processTree(Tree& t) {
t = Tree();
}
答案 0 :(得分:-3)
Tree(const Tree & copy)
{
if(copy != *this)
{
//to do
}
}
复制构造是这个签名,然后如果您为正常构造函数分配数据的范围,该语句是为了安全,但您可以使用àlistinitializer。