gpt4 book ai didi

c++ - 访问实现接口(interface)但不属于接口(interface)的类的函数

转载 作者:行者123 更新时间:2023-11-30 03:06:07 24 4
gpt4 key购买 nike

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

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

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

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() 的访问权限?

最佳答案

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

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

关于c++ - 访问实现接口(interface)但不属于接口(interface)的类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6958844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com