下面的代碼:C++多重繼承私有成員ambigious訪問
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++中,*名稱查找*發生之前*進行成員訪問檢查*。 – WhiZTiM
您之前提出的問題: http://stackoverflow.com/questions/6397938/ambiguous-access –