0

我有两个类,例如 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++ 新手,所以请指导我。

4

2 回答 2

1

至少通过以下方式更改 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();
}
于 2013-10-18T17:10:50.533 回答
1

在您的集合中,您不初始化 b 成员变量:

A::set(int high, int low, int middle)
{
   B(high, low, middle);
}
于 2013-10-18T17:11:10.943 回答