gpt4 book ai didi

c++ - 我可以将指针作为指向类的指针传递,这样我就可以使用类中分配给指针的任何内容吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:53 26 4
gpt4 key购买 nike

我的程序中有两个属于同一类的对象。我将焦点对象设置为第三个变量,它是一个指针。所以我可以用这个第三个指针变量切换焦点对象,并且可以访问我代码的每个部分,而不必知道哪个对象是焦点。

这看起来像下面这样:

class MainClass
{
OtherClass otherClass;

Field fieldA;
Field fieldB;
Field *focusedField = &fieldA;

void someMethod(){
otherClass.othermethod();

focusedField = &fieldB;

otherClass.othermethod();
}

void MainClass()
: otherClass(focusedField);
{

}
}

但是现在我想像这样在另一个类中使用这个指针:

class OtherClass{
OtherClass(Field *f){
focusedField = f;
}

Field *focusedField;

void otherMethod(){
std::cout << focusedField->getState() << std::endl;
}
}

这部分有效...
otherMethod 方法的第一次调用使用了 fieldA,这是正确的,但是第二次调用,我将其更改为 fieldB 后,仍然使用 fieldA。

我想实现我将 focusedField 传递给 OtherClass,如果我在 MainClass 中更改它,它会发生变化。

最佳答案

展开J. S.’s comment ,如果你想“跟踪”一个值,你可以存储一个指针或对它的引用。如果值本身是一个指针,情况仍然如此。对于常量正确性,您应该将 OtherClass 成员(和构造函数参数)声明为 Field *const & 因为它不需要更改哪个 Field 是重点。如果它也不需要写入任何聚焦的 Field,请使用 const Field *const &

值得注意的是,使用指向指针的指针作为成员(因为它允许赋值具有通常的语义)和作为构造函数参数(宣传临时对象不适合作为参数)可能会更好。它仍然服务于相同的共享目的,并允许相同的 const 放置选择。

关于c++ - 我可以将指针作为指向类的指针传递,这样我就可以使用类中分配给指针的任何内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com