我有两个类,例如,类A和B。B是封装在私有下的A中;

class A
{
   private:
    int x;
    int y;
    B b;

    public:
           void set(int , int, int, int, int);
           void setX(int);
           void setY(int);
           string toString();
 };

void A::set(int high, int low, int middle)
{
   B(high, low, middle);
   setX(x);
   setY(y);

}


void A:: setX(int x)
{
this -> x = x;
}

void A:: setY(int y)
{
    this -> y = y;
 }

string A::toString()
{

       string str;
   ostringstream convert;
   convert << getlow();
   str = convert.str();

return str;
}


class B
{
     private:
             int low;
             int middle;
             int hight;

     public:
            B();
            B(int, int, int);
            int getLow();
            int getMiddle();
            int getHigh();
};


与我的int main在另一个班级

int main ()
{
   int test1,test2,test3,test4,test5;

   // with lots of codes

   A a;
   a.set (test1,test2,test3,test4,test5);


}


当我从int main获得一些值时,我将3个值传递给set,这将初始化对象B。当我使用getB函数时,我得到的只是0值,或者根本不出现。 (我有一个接受参数并将所有int设置为0的构造函数)。有人可以启发我吗?并且请不要告诉我不要使用它。我是C ++的新手,所以请指导我。

最佳答案

至少通过以下方式更改A类的定义

class A
{
    private:
             B b;
             int x;
             int y;

    public:
           void set(int, int, int);
           int getB();
 };

void A::set(int high, int low, int middle)
{
   b = B(high, low, middle);

}

int A::getB()
{

    return b.getLow();
}

10-07 16:24
查看更多