1

我正在用 C++ 编写一个应用程序。我有一个定义了各种功能的接口:

class ITest
{
public:
        virtual void x()=0;
        virtual void y()=0;
}

然后我有一个实现此接口的类以及其他功能:

class NewClass: public ITest
{
public:
    virtual void x();
    virtual void y();
    // new function not defined in interface
    virtual void z();
}

我现在想从我的单元测试中访问所有这 3 个函数。目前我正在使用:

ITest* pTest;

这只会让我访问接口中定义的 2 个函数。如何在不在界面中定义函数 z() 的情况下访问它?

4

3 回答 3

3
NewClass* p = dynamic_cast<NewClass*>(pTest);
if(p==0)
{
   //error!!! pTest's dynamic type wasn't NewClass*
}
else
{
   p->z();
}

而不是dynamic_cast,您可以使用static_cast. 但如果pTest' 的动态类型实际上不是NewClass*你会得到未定义的行为。

于 2011-08-05T15:36:34.100 回答
0

使用 NewClass* 或强制转换为一(如果它是一)。

于 2011-08-05T15:37:56.567 回答
0

由于它是一个单元测试,因此您可以控制创建类的行。

现在不要这样做:

ITest* pTest = new NewClass();

但做:

NewClass* pTest = new NewClass();

你可以pTest->z()毫无问题地使用。

于 2011-08-05T15:39:24.487 回答