首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

c++/cli中派生TreeNode类的有关问题

2012-12-28 
c++/cli中派生TreeNode类的问题!我创建一个TreeNode的派生类myTreeNode类,添加了若干成员变量,其他没变。现

c++/cli中派生TreeNode类的问题!
    我创建一个TreeNode的派生类myTreeNode类,添加了若干成员变量,其他没变。
现在我有一个root对象,里面还包含了一些节点,当我需要复制这个root对象的时候,因为我没有重写myTreeNode->Clone()方法,因此当我调用root->Clone()其实还是调用了TreeNode类的Clone方法,得到的新的对象root_new里面我添加的成员变量的值就都无法复制过来,求高手解答.
public ref class CMyTreeNode : TreeNode{

public:
String ^ nodeName;

CMyTreeNode():TreeNode()
{

this->nodeName="";
}
}

即root_new里面所有节点的nodeName变量都是空的。
[最优解释]
深拷贝和浅拷贝http://www.soaspx.com/dotnet/csharp/csharp_20101011_5899.html
[其他解释]
TreeNode类里面包含了很多变量,有的是值有的也是引用,按照链接的方法创建新对象在赋值的方法好像不太适用。
[其他解释]
我认为要实现TreeNode派生的问题,用深拷贝赋值可能不太现实,因为这个类的引用对象太多了,想每个都gcnew来拷贝貌似不可信。我想用串行化来做可是还是有很多问题。程序如下:



[Serializable]
public ref class CMyTreeNode : TreeNode{

public:
String ^ nodeName;

CMyTreeNode( String ^ inputString)
{

nodeName =inputString;
}
CMyTreeNode():TreeNode()
{

this->nodeName=" ";
}

CMyTreeNode(SerializationInfo^ serializationInfo,StreamingContext context):TreeNode(serializationInfo , context)
{

}

CMyTreeNode^ copyTreeNode()
{

CMyTreeNode^ renode;
CMyTreeNode ^ ttt = this;
BinaryFormatter ^bf = gcnew BinaryFormatter;
MemoryStream ^ms = gcnew MemoryStream();
bf->Serialize(ms,ttt);
ms->Seek( 0 , SeekOrigin::Begin);
renode = static_cast<CMyTreeNode^>(bf->Deserialize(ms));

return renode;
}
};

}

这样那个构造函数CMyTreeNode(SerializationInfo^ serializationInfo,StreamingContext context):TreeNode(serializationInfo , context)我只能用基类的,得到的实际还是个TreeNode类
成员变量nodeName仍然没有赋值,望高手指教那个构造函数应该怎么弄!
[其他解释]
keke

热点排行