【发布时间】:2010-12-15 23:44:51
【问题描述】:
我一直在绞尽脑汁想从 C++ 中的一些测试代码中访问受保护成员函数的最佳方法,这是我的问题:
//in Foo.h
Class Foo
{
protected:
void DoSomething(Data data);
}
//in Blah.h
Class Blah
{
public:
Foo foo;
Data data;
};
//in test code...
Blah blah;
blah.foo.DoSomething(blah.data); // Here's my problem!
目前为止的一些可能的解决方案:
欢迎所有建议/见解/意见!
谢谢
【问题讨论】:
-
为什么要测试受保护的方法?我相信你应该测试类的公共接口,将内部实现留给类本身。
-
@AraK,很抱歉看到您删除了答案。这几乎是正确的,但是您应该使用
&test::DoSomething而不是&Foo::DoSomething- 这是该技巧中的重要内容,因为它使访问检查顺利进行。既然您是第一个回答的,请告诉我您是否想取消删除您的答案,我将在下面删除我的答案! -
嗯,你为什么不直接创建一个派生类呢?我在这里看到的每一个答案都破坏了面向对象的整个目的。继承的存在是有原因的!