我可以将指针作为指向类的指针传递,以便可以使用分配给该类中指针的任何内容吗?

时间:2019-05-02 23:34:55

标签: c++ pointers

让我解释一下。

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

如下所示:

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中更改它,它也会改变。

1 个答案:

答案 0 :(得分:0)

要在J. S.’s comment上扩展,如果要“跟踪”值,请存储一个指针或对其的引用。如果值本身就是一个指针,那仍然是正确的。为了确保const正确性,您应该将OtherClass成员(和构造函数参数)声明为Field *const &,因为它不需要更改关注的Field。如果也不需要写任何集中的Field,请使用const Field *const &