代码之家  ›  专栏  ›  技术社区  ›  Dominic Bou-Samra

C++在一个方法中实例化一个类,然后从一个不同的方法中更改成员变量?

  •  2
  • Dominic Bou-Samra  · 技术社区  · 15 年前

    假设我有一个方法,在该方法中它实例化一个Person类:

    void methodA()
    {
        Person personObject;
    }
    

    我如何从另一个方法中访问该对象的方法?例如:

    void methodB()
    {
        personObject.someMethod();
    }
    

    我意识到这是一个令人痛苦的正午问题:p

    4 回复  |  直到 15 年前
        1
  •  4
  •   Brian R. Bondy    15 年前

    传递对另一个函数的引用。

    void methodB(Person &personObject)
    {
        personObject.someMethod();
    }
    
    void methodA()
    {
        Person personObject;
        methodB(personObject);
    }
    
        2
  •  1
  •   wheaties    15 年前

    你不能,第一个 Person 对象是一个本地对象,一旦超出函数范围就会消失。您需要使它成为类的一部分,以便其他方法查看它。

        3
  •  0
  •   Andrew Walker    15 年前

    您需要使PersonObject成为类的成员。另外,如果您必须在方法A中创建PersonObject,而不是在构造函数中初始化它,那么您需要使用new动态创建该对象。

    class MyClass
    {
    public:
        MyClass()
            : personObject(0)
        {
        }
        ~MyClass() 
        {
            delete personObject;
        }
        void methodA()
        {
            personObject = new Person();
        }
        void methodB()
        {
            personObject->someMethod();
        }
    private:
        Person* personObject;
    };
    
        4
  •  0
  •   sth    15 年前

    也许你想要 personObject 要成为类的成员变量:

    class SomeClass {
       Person personObject;
    public:
       void methodA();
       void methodB();
    };
    
    void SomeClass::methodA() {
        personObject = Person(123);
    }
    
    void SomeClass::methodB() {
        personObject.someMethod();
    }