如何在一种方法中创建对象并在另一种方法中使用它

How to create an object in one method and use it in another

本文关键字:方法 创建对象 另一种 一种      更新时间:2023-10-16

这是我代码的简化版本:

#include <iostream>
using namespace std;
class ClassA {
public:
void method1A(){
cout << "Hello World." << endl;
}
void method2A(){
cout << "Bye." << endl;
}       
};
class ClassB {
public:
void method1B(){
ClassA objectA;
objectA.method1A();
}
void method2B(){
objectA.method2A();
}
};
int main() {
ClassB objectB;
objectB.method1B();
objectB.method2B();
return 0;
}
错误是:"objectA">

没有在这个范围内声明,我想这是因为方法"method2B"无法访问对象"objectA"-是的,我正在学习 c++ ^^-。如果不从"method1B"移动"objectA"对象声明,它是如何工作的?

您需要在方法之外声明成员对象:

class ClassB {
public:
ClassA objectA;
void method1B(){
objectA.method1A();
}
void method2B(){
objectA.method2A();
}
};

这样,类内的所有内容都可以访问它。如果您不希望它在类外部访问,请改为将其设为私有或受保护:

class ClassB {
public:
// Your public declarations
private:
ClassA objectA;
};

您有两个选择:

  1. objectA成为ClassB的成员
  2. method2B中创建另一个ClassA(就像您在method1B中所做的那样(

您可以为堆上的新ClassA动态分配空间,然后返回指向该内存开头的指针:

#include <iostream>
using namespace std;
class ClassA {
public:
void method1A(){
cout << "Hello World." << endl;
};
void method2A(){
cout << "Bye." << endl;
};       
};
class ClassB {
public:
ClassA * method1B(){
ClassA * ObjectA = new ClassA;
ObjectA->method1A();
return ObjectA;
};
void method2B(ClassA * objectA){
objectA->method2A();
};
};
int main() {
ClassB objectB;
ClassA * objectA = objectB.method1B();
objectB.method2B(objectA);
delete objectA;
return 0;
};

我希望这有所帮助。