我有以下類別:如何輕鬆公開C++類的所有私有成員我是朋友?
class Foo
{
friend class FriendFoo;
private:
int private_number1;
int private_number2;
int private_function1();
int private_function2();
};
class FriendFoo
{
public:
Foo& foo;
FriendFoo(Foo& foo_) : foo(foo_)
{
}
// I don't want to write the following adaptors:
int getPrivateNumber1()
{
return foo.private_number1;
}
int getPrivateNumber2()
{
return foo.private_number2;
}
int private_function1()
{
return foo.private_function1();
}
int private_function2()
{
return foo.private_function2();
}
};
問題:
我想通過FriendFoo
訪問的Foo
所有的私有成員來自外部的,但我不想修改類FriendFoo
每當私有成員的Foo
更改(或另一個添加)。 理想情況下,我想擺脫所有適配器。有沒有辦法如何實現這一點?
背景:
我想用這個私有方法的單元測試,我選擇了做它的「朋友」的方式。 請不要在這裏討論/批評私人方法的測試,關於它的很多文章都是這樣寫的。 我只想找到解決具體的技術問題。
如果您的所有函數都具有相同的簽名,您可以隨時將函數添加到私有向量;但我不明白你爲什麼不想改變friendFoo;您正在將測試對象的測試維護到測試對象,這是錯誤的地方。 – UKMonkey
我很想創建[trust-issues]標籤。 – Quentin
這是一個典型的問題,大多數單元測試框架允許測試私有函數解析代碼,儀器代碼和生成幫助者 – Garf365