根据姊妹类自动实现虚函数
Automatically implement virtual functions depending on sister classes
是否可以使用一种习惯用法来帮助实现依赖于基类存在的虚函数?例如,我有
class B {/* some abstract interface. */};
class A
{
public:
virtual B* getB() {return nullptr;}
};
class C : public A, public B
{
public:
B* getB() override {return this;}
/* Implement B's interface here.*/
};
和我通常想实现getB
这样-我能以某种方式避免重复这个所有叶类吗?我可能有一些接口类,如B,
我知道这样做的一种方法是实际上继承C和B中的A,但我希望保持B与A无关,如果可能的话。
你可以用A:
class A
{
public:
virtual B* getB() {return dynamic_cast<B*>(this);}
};
注意:这里的virtual
只是为了使A类多态,这是dynamic_cast
使用的要求。我们不打算重写getB()
。
相关文章:
- 在命名空间内部还是外部实现 c++ 函数?
- 如何在C++中实现函数(f)(x)(y, z)(g)(r)
- 如何在C++中实现函数上的二叉搜索?
- 键按下事件错误 Qt 实现函数时
- 在子类之外实现函数导致未知错误
- 通过模板滥用实现函数式C++
- C++,实现函数"int next(std::string param)"时出现奇怪的编译器错误
- 我正在尝试创建自己的 strcat() 函数,而不是使用库实现函数<cstring>
- 如果未实现函数,则在链接时启用错误
- 用函数参数实现c++函数指针
- 如何在Android SDK中调用和实现C++函数
- 在 C++ RCPP 中实现 R 函数
- 实现函数模板填充多维对象
- 类的层次结构,试图在基本级别实现函数
- 用c++实现函数对象的自动检测类型
- 用shared_ptrs实现函数模板的C++实例化
- 在类中实现函数导致错误:成员引用基类型'ifstream (string)'不是结构或联合
- 用c++实现S函数.生成错误
- 引用可以用于实现函数重写吗
- 如何在c++中实现函数超时