c++ - 如何根据接口(interface)类型运行

标签 c++ c++11 visual-c++

我需要一个代码根据调用的接口(interface)运行,例如下面的代码:

public class VirtualStreamingFiler : IBFiler, IAFiler
{
    public VirtualStreamingFiler()
    {
        cout << "I like " << interface_func_type_return() << " too!\n";
    }
}

interface_func_type_return()会根据使用的接口(interface)返回一个字符串,如果是IAFiler则返回“A_string_request”,如果是IBFiler则返回“general_purpose_B”

int main ()
{
  IAFiler _vpnFiler = new VirtualStreamingFiler();
  return 0;
}

所以这里的输出将是:

A_string_request

我该怎么做?

谢谢

最佳答案

如果你需要一个函数来做两件不同的事情,你就需要两个不同的函数。一个类中的两个不同函数可以具有相同名称和相同签名的唯一方法是,如果它们中至少有一个不是虚拟的,并且它们来自不同的基类。

class A
{
   public:  void func () { funcA(); }
   private: void funcA() = 0;
};

class B
{
   public:  void func () { funcB(); }
   private: void funcB() = 0;
};

class AB : public A, public B
{
   void funcA() { do something; }
   void funcB() { do something else; }
};

然而,这是一个非常有问题的设计,在实现之前我会三思而后行。

关于c++ - 如何根据接口(interface)类型运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137958/

相关文章:

c++ - 传递指针 - 用于写入流

c++ - 使用可变参数模板在 C++ 中定义列表类

c++ - 为什么在使用 "C"语言环境时 printf 可以显示非 ASCII 字符?

javascript - 使用VC++ COM从WebBrowser2获取IFrame的名称

visual-c++ - 为 Visual Studio 2012 安装 OpenCV

c++ - 获取鼠标悬停时 ClistBox 项目的索引

c++ - 如何在声明时初始化成员对象?

c++ - 写出文件时出现奇怪的 glibc 错误

c++ - 相互依赖的类模板设计?

c++ - 为什么不能实例化带有 "non const"复制构造函数的对,而没有实例化一对是可能的?