【发布时间】:2017-08-01 21:22:22
【问题描述】:
我在 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 {}
};
现在在 main 我可以这样称呼它:
AB * ab = new AB();
ab->B::setId(10);
但我真的不喜欢它。
还有其他解决方案吗? AB 中不需要来自 struct A 的方法 setId/getId。我只是做了继承,因为我需要foo() 和A 的其他东西,但所有其他方法都是独一无二的。
【问题讨论】:
-
你能修改你的层次结构吗?例如。更改
A并引入额外的类 -
@VittorioRomeo 我可以(以有限的方式)
-
当你说你“需要”
foo()和来自A的其他东西时,你指的是声明还是定义? -
可以把A类分解成别的东西。
标签: c++ c++11 inheritance