如何在一种方法中创建对象并在另一种方法中使用它
How to create an object in one method and use it in another
这是我代码的简化版本:
#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;
};
您有两个选择:
objectA
成为ClassB
的成员- 在
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;
};
我希望这有所帮助。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法
- 工厂方法创建的对象应该在哪里删除?
- 如何在一种方法中创建对象并在另一种方法中使用它
- 如何发送通过绑定到函数/方法创建的函数对象?
- 使用各种数据类型成员创建对象的简便方法
- 是否可以在一个语句中创建对象并调用方法?
- 在堆栈上创建对象的不同方法
- 如何使用工厂方法创建不同的对象
- 仅通过基类"create"方法将对象创建为共享指针
- C++模板方法来创建对象
- 存储动态创建对象的列表/向量的最佳方法是什么
- 无法创建对象并使用其模板类方法
- 有没有一种方法可以强制使用shared_ptr在堆上创建对象
- 创建对象数组然后有效删除它们的更好方法
- 用方法和对象创建函数对象
- 使用私有构造函数在静态方法中创建对象
- 静态方法来创建对象而不是构造函数