说我有一个方法,并且该方法在它实例化一个Person类:C++实例化一个方法中的类,然后从不同的方法改变成员变量?
void methodA()
{
Person personObject;
}
我将如何访问该对象的方法从另一个方法中?即
void methodB()
{
personObject.someMethod();
}
我意识到这是一个痛苦nooby问题:像什么P
说我有一个方法,并且该方法在它实例化一个Person类:C++实例化一个方法中的类,然后从不同的方法改变成员变量?
void methodA()
{
Person personObject;
}
我将如何访问该对象的方法从另一个方法中?即
void methodB()
{
personObject.someMethod();
}
我意识到这是一个痛苦nooby问题:像什么P
传递给其他函数的引用。
void methodB(Person &personObject)
{
personObject.someMethod();
}
void methodA()
{
Person personObject;
methodB(personObject);
}
只是为了澄清methodB的personObject可以被称为任何东西。该名称不需要与methodA的名称相匹配。 – 2010-03-31 01:05:39
你不能。第一个Person
对象是一个本地对象,并且在该函数的作用域之外消失一次。您需要使其成为其他方法的类的一部分来查看它。
您需要将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;
};
当然,还需要实现复制构造函数和赋值运算符。 – GManNickG 2010-03-31 02:53:15
也许你想要的personObject
是你的类的成员变量:
class SomeClass {
Person personObject;
public:
void methodA();
void methodB();
};
void SomeClass::methodA() {
personObject = Person(123);
}
void SomeClass::methodB() {
personObject.someMethod();
}
你不是叫'methodB'。当你这样做时,'methodA'将会结束并且你制作的'Person'被破坏。如果你需要一个'Person'作为你班级的数据,那么把它作为一个成员。 – GManNickG 2010-03-31 00:59:37