C++ 将内容从一个指针复制到另一个指针
我有两门课:C++ 将内容从一个指针复制到另一个指针,c++,pointers,C++,Pointers,我有两门课: class Request { KeyValuePair* dimension; }; class Response { KeyValuePair* dimension; }; class KeyValuePair { public: hash_map<string, string> hmap; }; 当然可以: *(res.dimens
class Request
{
KeyValuePair* dimension;
};
class Response
{
KeyValuePair* dimension;
};
class KeyValuePair
{
public:
hash_map<string, string> hmap;
};
当然可以:
*(res.dimension) = *(req.dimension);
请注意,如果KeyValuePair
不是POD类型,则应定义赋值运算符(operator=
),因为它将在赋值过程中被调用。如果不这样做,将调用编译器生成的一个
您还应检查res.dimension
是否正确分配,如果没有,请使用复制构造函数:
if ( res.dimension )
*(res.dimension) = *(req.dimension);
else
res.dimension = new KeyValuePair(*(req.dimension));
您可以重载
响应
类的=
操作符来执行请求.维度
的深度复制,这将使您的响应.维度
与请求.维度
具有相同的值,但与请求.维度
的任何更改无关
您需要分配新内存。此外,您还需要有复制构造函数(或者在适当的情况下使用默认构造函数)
res.dimension=新的KeyValuePair(要求的维度)代码>
此外,您还必须处理内存,即定义一个复制构造函数、复制运算符、空构造函数和析构函数。您可以实现一个“”指针,以避免不必要的开销。如何定义KeyValuePair
?它是否有合适的(复制)构造函数?如果正确定义了复制构造函数,则可以执行res.dimension=newkeyvaluepair(req.dimension)代码>。这假设存储已分配给*(res.dimension)
,但情况可能并非如此。什么是豆荚?我已更新以将我的KeyValuePair放入问题中。如果说KeyValuePair不是POD,您能给我看一个定义赋值运算符的教程吗?谢谢@鲁迪简单的旧数据。另外,我相信如果你在谷歌上搜索,你会很容易找到一个教程。这真的不是一个有用的答案。几乎永远都不应该只有一个链接。当然,他必须记住在分配时取消对指针的引用。
if ( res.dimension )
*(res.dimension) = *(req.dimension);
else
res.dimension = new KeyValuePair(*(req.dimension));