有人可以向我解释以下编译器错误,该错误表明'x'是歧义的引用?
class A {
int x; // private here
};
class B {
public:
int x; // public here
};
class C : public A,B {
};
int main() {
C c;
c.x = 5; // here is the error
return 0;
}
您的C
包含两个x
变量。一个继承自每个父类。因此,要分配给A::x
还是B::x
都模棱两可。仅仅因为一个不可访问并不意味着另一个将被自动选择。编译器无法知道您打算尝试分配给专用A::x
(这将是另一个错误)还是公用B::x
。