C++-从引用继承
C++ - Inherit from reference
我希望类A从类B继承,而不需要A自己实例化B
这个想法是在堆上创建一个B对象(使用B new),并将指针指向A。之后,A将使用此对象来解决继承问题。
这是我想做的一个例子:
B* b = new B();
b->myBmethode();
{
A(b);
A.myBmethode();
} // A destroyed
b->myBmethode();
delete b;
不,这是不可能的(如果我正确理解你的问题)。
3.7.5
成员子对象、基类子对象和数组元素是其完整对象的元素
如果B是在A之外创建的,则在A被删除后,B不会自动删除,除非你明确这样做,
创建一个接口IA,让A和B都实现该接口。对于B,只需将所有实际实现委托给B即可。
B的生命周期取决于您的设计。你希望它什么时候被销毁?如果有意义的话,您也可以将B设为singleton。
class IA {
virtual doA() = 0;
}
class A: public IA {
virtual doA();
}
class B: public IA {
B(A&a);
virtual doA(){
a.doA();
}
private:
A&a;
}
//init
A* a = A::getInstance();
B *b = new(*a) ;
b->doA();
您不能从引用继承,但有了这样的东西,您可以达到一半:
#include<functional>
...
struct A : std::reference_wrapper<B>{
// using std::reference_wrapper<B>::reference_wrapper; // inherit constructor
};
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
相关文章:
- 如何继承返回对当前对象的引用的方法?
- 继承引用无法正常工作
- 不能引用类继承默认构造函数
- 一个关于继承和引用的C++问题
- C++对已继承的受保护类成员的未定义引用
- C++ 继承问题:未定义对"vtable"的引用
- 收到未定义的引用错误 c++ 继承/多态性
- 引用如何解决多重继承中的歧义
- 对 c++ (g++) 中具有菱形继承的函数的未定义引用
- C 引用抽象父母中继承的孩子
- 对"vtable for "命名空间继承的未定义引用 对"类型信息"的未定义引用
- 对具有继承的 vtable 的未定义引用
- 为什么不能将继承自(非模板)类 B 的实例化类模板 A 的引用转换为对 B 的引用?
- 使用CMake构建Qt项目并从QMainWindow继承会导致未引用的vtable错误
- 取消定义引用..:从模板类继承
- 如何在Visual Studio中将项目依赖项/引用从一个项目继承到依赖项目
- 未定义的引用继承
- 对的未定义引用带有继承,makefile问题
- 引用类型和继承问题
- 继承的引用成员的构造函数中的C++默认初始化