我在 C++11 中有这个结构
struct A {
int idA;
void setId(int i) { idA = i;}
int getId() { return idA;}
virtual void foo() = 0;
};
struct B {
int idB;
void setId(int i) { idB = i;}
int getId() { return idB;}
virtual void foo2() = 0;
};
struct AB : public A, public B
{
void foo() override {}
void foo2() override {}
};
现在主要我可以这样称呼它:
AB * ab = new AB();
ab->B::setId(10);
但我真的不喜欢它。
还有其他解决方案吗?方法 setId/getId
来自 struct A
在 AB
中不需要。我只是做了继承,因为我需要 foo()
和其他来自 A
的东西,但所有其他方法都是独一无二的。
原文由 Martin Perry 发布,翻译遵循 CC BY-SA 4.0 许可协议
既然你说你不需要
A
这些方法的版本,你可以写这会将
B
的这些方法的实现放入AB
的命名空间中,并使调用它们明确。