我有两个类,例如,类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();
}