C++ 按返回值指向

C++ 按返回值指向,c++,class,accessor,C++,Class,Accessor,假设我们有两个类 class A { public: Course ( int num ) ; int getAnum(); int num; } A::A( int num ) { this->num = num; } int A::getAnum() { return this->num; } 另一班呢 class B { public: B ( A * a = NULL

假设我们有两个类

class A
{
    public:
        Course ( int num ) ;
        int getAnum();

        int num;
}


A::A( int num )
{
    this->num = num;
} 

int A::getAnum()
{
    return this->num;
}
另一班呢

class B
{
    public:
        B ( A * a  = NULL);
        A * getA();      
    A * a;
}


B::B( Course * a )
{
    this->a = new A;
    this->a = a;
}
A * B::getA() { return this->a; }
大体上

A* a = new A(12);
B* b = new B(a);
问题是如何打印数字

cout << b.getA->getAnum();
coutgetanum();


coutcout GetAnum();因为你的变量是公共的,所以它可以被访问。

你的代码中有很多错误,通过解决这些问题,你会发现更多有用的东西,找到你的答案,但除了C++之外,为了调用一个函数,你需要使用<代码>操作程序()/<代码>,所以你应该写<代码> B-> GETA()-> GATANUME()。
而不是
b->getA->getAnum()
。在您的版本中,
b->getA
是一个函数,您不能对其应用
操作符->
!但是
b->getA()@荒凉者:我数到四。您得到了多少?需要多长时间才能找到为什么b.getA()->getAnum()是seg错误,因为b对象默认使用空a构造?你可能想再考虑一下这个设计。你的
B::B
身体看起来不对。来吧,我说了,别理它。我只是想了解我是否可以使用返回值作为数据成员。如果数据成员是私有的,仅仅因为它是公共的,并不意味着你应该使用它。事实上,您应该使用
GetAnum()
,并将
a
设为私有。免责声明:使用getter和setter并不总是合适的。我在这里推荐它,因为给出的示例缺乏细节和上下文。有时这是不可取的。
 cout <<b.a->getAnum();