C ++访问另一个类成员

时间:2014-06-09 21:19:59

标签: c++ class object

我有关于类和对象的问题。首先,这是我的计划。

#include <iostream>
#include <conio.h>
using namespace std;

class Class1{
    private:
        int x;
    public:
        Class1();
        void Display();

};
class Class2{
    private:
        double z;
    public:
        Class2();
        void Display();
        Class2 Add(Class1);
};

Class1::Class1(){   x = 1;  }
Class2::Class2(){   z = 5;  }
void Class1::Display(){ cout<<x<<"\n";  }
void Class2::Display(){ cout<<z<<"\n";  }
Class2 Class2::Add(Class1 t){
    Class2 y;
    y.z = t.x + z;
    return y;
}

int main(){

    Class1 ob1; // ob1 = 1 //
    Class2 ob2,ob_x; // ob2 = 5  | ob_x = 5 //  
    ob_x = ob2.Add(ob1); // Add ob + ob1 and Assigned them to ob_x //
    ob_x.Display();

    cout<<endl;
    getche();
    return 0;
}

我想您知道错误在哪里,如何访问其他类成员? 我的意思是我们没有在大学里学到这一切,我们都知道,直到知道这么简单。我可以使用另一个可以访问这两个类的全局函数吗?如果可以提供一些小技巧,请谢谢

2 个答案:

答案 0 :(得分:2)

只需将getter方法int get_x()添加到Class1

即可
#include <iostream>
#include <conio.h>
using namespace std;

class Class1{
    private:
        int x;
    public:
        Class1();
        void Display();
    int get_x();

};

int Class1::get_x()
{
 return x;
}

class Class2{
    private:
        double z;
    public:
        Class2();
        void Display();
        Class2 Add(Class1);
};

Class1::Class1(){   x = 1;  }
Class2::Class2(){   z = 5;  }
void Class1::Display(){ cout<<x<<"\n";  }
void Class2::Display(){ cout<<z<<"\n";  }
Class2 Class2::Add(Class1 t){
    Class2 y;
    y.z = t.get_x() + z;
    return y;
}

int main(){

    Class1 ob1; // ob1 = 1 //
    Class2 ob2,ob_x; // ob2 = 5  | ob_x = 5 //  
    ob_x = ob2.Add(ob1); // Add ob + ob1 and Assigned them to ob_x //
    ob_x.Display();

    cout<<endl;
    getche();
    return 0;
}

答案 1 :(得分:-4)

您在课程中设置了x private,这意味着您无法从其他课程中访问它。这就是您的程序出错的原因。设为public,然后您的程序就会开始工作。