gpt4 book ai didi

C++多重继承私有(private)成员模糊访问

转载 作者:行者123 更新时间:2023-11-30 02:27:01 26 4
gpt4 key购买 nike

以下代码:

class A1 {
public:
int x;
};
class A2 {
private:
int x() { return 67; }
};

class M : public A1, public A2 {};

int main() {
M m;
m.x;
}

编译错误:

error C2385: ambiguous access of 'x'
note: could be the 'x' in base 'A1'
note: or could be the 'x' in base 'A2'

但是为什么?只有 A1::x 应该对 M 可见。A2::x 应该是纯本地的。

最佳答案

在 C++ 中,name-lookup发生在 member access checking 之前被执行。因此,名称查找(在您的情况下为不合格)找到两个名称,这是不明确的。

您可以使用限定名称来消除歧义:

int main() {
M m;
m.A1::x; //qualifed name-lookup
}

关于C++多重继承私有(private)成员模糊访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com