2

我在下面有一些代码:

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. 如何测试此代码?

4

2 回答 2

4

你通常只测试你的类的公共 API。
因此,如果您有必要测试 的值,则该值x很可能也与其他类相关。您声明child为可以访问的朋友x这一事实支持了这一事实。

结论:
公开x或(更好地)提供 getter 和可能的 setter 方法。

于 2013-02-20T10:41:35.897 回答
1

将此代码添加到公共部分的基类中:

friend int main();

然后在 main 函数中,取消注释以下行:

t=new base;

但我建议您将基类的构造函数设为公共而不是私有。另外,我真的很好奇您为什么将基类的构造函数设为私有。

于 2013-02-20T10:47:05.220 回答