假设我有一个方法,并在该方法中实例化一个Person类:
void methodA()
{
Person personObject;
}
如何从另一个方法中访问该对象的方法?即类似的东西:
void methodB()
{
personObject.someMethod();
}
我意识到这是一个非常痛苦的问题:P
答案 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();
}