相关疑难解决方法(0)

C++中最接近定义类的超类的东西是什么?

假设我有班级

class A {
protected:
    int x,y;
    double z,w;

public:
    void foo();
    void bar();
    void baz();
};
Run Code Online (Sandbox Code Playgroud)

在我的代码和其他代码中定义和使用.现在,我想写一些可以很好地在A上运行的库,但它实际上更通用,并且能够操作:

class B {
protected:
    int y;
    double z;

public:
 void bar();
};
Run Code Online (Sandbox Code Playgroud)

我确实希望我的库是通用的,所以我定义了一个B类,这就是它的API.

我希望能够告诉编译器 - 不是在我不再控制的A的定义中,而是在其他地方,可能在B的定义中:

请注意,请尝试将其B视为超类A.因此,特别是,将它放在内存中,这样如果我重新解释A*为a B*,我的代码期望B*s会起作用.并请然后实际接受A*B*(和A&作为B&等等).

在C++中,我们可以通过另一种方式执行此操作,即如果B是我们无法控制的类,则可以执行"子类已知类"操作class A : public B { ... }; 我知道C++没有相反的机制 - "通过新的B类超类化已知的A类".我的问题是 - 这个机制最接近可实现的近似值是多少?

笔记:

  • 这都是严格的编译时间,而不是运行时.
  • 可以有没有任何的变化class A.我只能修改B知道两者A和的代码的定义和代码 …

c++ idiomatic subclassing superclass

31
推荐指数
3
解决办法
2377
查看次数

标签 统计

c++ ×1

idiomatic ×1

subclassing ×1

superclass ×1