这是我的代码的简化版本:
sites = 400
错误是:'objectA'未在此范围内声明,我想它是因为方法"方法2B"无法访问对象" objectA" -yep,我学习c ++ ^^ - 。如何在不移动" objectA"来自"方法1B"?
的对象声明答案 0 :(得分:2)
您有两种选择:
objectA
作为ClassB
ClassA
内创建另一个method2B
(就像您在method1B
中所做的那样)答案 1 :(得分:2)
您需要在方法之外声明成员对象:
class ClassB {
public:
ClassA objectA;
void method1B(){
objectA.method1A();
}
void method2B(){
objectA.method2A();
}
};
这样,课程内的所有内容都可以访问它。如果您不希望它在课堂外访问,请将其设为私有或保护:
class ClassB {
public:
// Your public declarations
private:
ClassA objectA;
};
答案 2 :(得分:1)
您可以为堆上的新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;
};
我希望这会有所帮助。