我有以下代码:
class base{
private:
base();
int x;
public:
friend class child;
};
class child{
public:
void display(base* b)
{
b->x = 1;
}
};
int main()
{
base* t;
//t = new base;
child c;
c.display(t);
}
我无法分配对象t
。我想测试x
的值。
我该如何测试这段代码?
答案 0 :(得分:4)
您通常只测试班级的公共API
因此,如果您需要测试x
的值,那么该值很可能也与其他类相关。您声明child
为访问x
的朋友的事实支持这一事实。
结论:
让x
公开或(更好)提供getter和可能的setter方法。
答案 1 :(得分:1)
将此代码添加到公共部分的基类中:
friend int main();
然后在main函数中,取消注释以下行:
t=new base;
但是我建议你将基类的构造函数设为public而不是private。另外,我真的很好奇为什么你把基类的构造函数设为私有。