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

时间:2010-03-31 00:53:55

标签: c++ class

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

void methodA()
{
    Person personObject;
}

如何从另一个方法中访问该对象的方法?即类似的东西:

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

我意识到这是一个非常痛苦的问题:P

4 个答案:

答案 0 :(得分:4)

将引用传递给另一个函数。

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

void methodA()
{
    Person personObject;
    methodB(personObject);
}

答案 1 :(得分:1)

你做不到。第一个Person对象是本地对象,并且在函数范围之外消失。您需要将其作为其他方法的一部分来查看它。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可能希望personObject成为班级的成员变量:

class SomeClass {
   Person personObject;
public:
   void methodA();
   void methodB();
};

void SomeClass::methodA() {
    personObject = Person(123);
}

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