2013-02-20 42 views
2

下面我有一些代碼的私有成員:如何測試與私有的構造函數C++

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

'base'沒有接口,所以沒有什麼可以測試的。你的測試應該驗證'child'按預期工作。 – 2013-02-20 10:43:43

回答

4

你通常只測試你的類的公共API。
因此,如果您有必要測試x的值,那麼最有可能該值與其他類相關。您宣佈child作爲朋友訪問x的事實支持這一事實。

結論:
使x公開或(更好)提供getter和可能的setter方法。

1

公共部分的代碼添加到基類:

friend int main(); 

,然後在主函數,取消這行:

t=new base; 

但我建議你做底座的構造而不是私人的。另外,我真的很好奇你爲什麼讓基類私有構造函數。

+0

因爲我正在使用單例類 – 2013-02-20 11:23:05