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

时间:2017-07-30 18:11:30

标签: c++ oop

这是我的代码的简化版本:

sites = 400

错误是:'objectA'未在此范围内声明,我想它是因为方法"方法2B"无法访问对象" objectA" -yep,我学习c ++ ^^ - 。如何在不移动" objectA"来自"方法1B"?

的对象声明

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. objectA作为ClassB
  2. 的成员
  3. 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;
};

我希望这会有所帮助。