![](/img/trans.png)
[英]How can I check a string parameter in googlemock that is passed as void pointer
[英]Can I modify the target of a pointer passed as parameter?
函數是否可以更改作為參數傳遞的指針的目標,以使效果保持在函數之外?
void load(type *parameter)
{
delete parameter;
parameter = new type("second");
}
type *pointer = new type("first");
load(pointer);
在這個最小的示例中, pointer
將pointer
第二個分配對象嗎? 如果沒有,我如何獲得這種行為?
更新:為了澄清我的意圖,如果參數是普通類型而不是指針,這是我將使用的代碼。 在這種情況下,我將只使用引用。
void load(type ¶meter)
{
parameter = type("second");
}
type variable("first");
load(&variable);
這很容易,但是我嘗試使用指針做同樣的事情。
沒有。
在這種情況下, parameter
將獲取pointer
值的副本。 因此,這是一個新變量。 您對其所做的任何更改僅在功能范圍內可見。 pointer
保持不變。
您必須通過引用傳遞the pointer
void load(type *& parameter)
^
{
或者,您可以使用double
指針。
void load(type** parameter)
{
delete *parameter;
*parameter = new type("second");
}
type *pointer = new type("first");
load(&pointer);
但是由於您使用的是cpp,因此可以使用references
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.