C++ OOP如何写一个函数等价于“指针指向一个指针”?[关闭]

3bygqnnd  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(111)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
2天前关闭。
Improve this question
如何编写一个类函数,允许另一个函数通过其指针修改成员?
例如:

class cFoo
{   private:
    char *m_bar;
    public:
    char *bar(void) {return m_bar;}
    void set_bar(char *newBar) {m_bar = newBar;}
};

void func2(char **c)
{    *c = malloc(256);
}

cFoo fooInst;
func2(&fooInst.m_bar);  // this will fail, but...
                        // how to do this with a function that references 'm_bar'?

我不能使用set_bar,因为func2需要设置值。
我正在寻找一个类cFoo的函数,我可以使用它作为参数传递给另一个函数,该函数需要修改cFoo的成员。
注意:charmalloc纯粹是为了说明的目的,实际情况要复杂得多,为了讨论的目的已经简化了。实际的代码是遗留代码,我们正试图逐步地、非破坏性地重构它。

k3bvogb1

k3bvogb11#

这是一个非常糟糕的设计,你可以做这样的事情:

// ...
    char*& bar() { return m_bar; }
    // ...

func2(&fooInst.bar());

好一点:

cFoo fooInst;
char* bar = nullptr;
func2(&bar);
fooInst.set_bar(bar);

让我们忽略与存储非托管原始指针有关的问题。

相关问题