所以我有一个函数将指针作为参数。与
类似Type *Foo(unsigned int head, Type *fixed, Type *period)
{
Type *periodCopy = new Type;
*periodCopy = *period;
Type *fixedCopy = new Type;
*fixedCopy = *fixed;
...
我在periodCopy和fixedCopy上运行,希望不改变固定或周期。然而,情况似乎并非如此。它仍然看起来我正在修改我给函数的任何东西。我是c ++和指针的新手,我无法真正了解这里发生的事情。副本不应该指向与非复制品分开的数据吗?这是一项任务。如果我可以从指针更改参数,我相信我可以很容易地得到我想要的东西,但这不是一个选项。任何帮助表示赞赏。我希望这很清楚
答案 0 :(得分:-1)
你正在复制自己。因此,您需要确保在从函数返回之前删除句点的副本并修复。
如果不需要复制,则在函数中使用const指针。
Type *Foo(unsigned int head, const Type *fixed, const Type *period)
更好的方法是使用参考。
Type *Foo(unsigned int head, const Type &fixed, const Type &period)
//Now treat fixed and period as a normal object.
如果您需要复制,请按值传递参数。这将自动负责创建和销毁对象。但是复制构造函数必须是公共的。
Type *Foo(unsigned int head, Type fixed, Type period)