Trong mã mẫu này, có hai câu hiển thị cùng một biến tĩnh. Cái đầu tiên không có sự mơ hồ, nhưng cái thứ hai có, tại sao?Sự mơ hồ trong biến thành viên tĩnh đủ điều kiện
#include <iostream>
using namespace std;
struct A { static const char a = 'a'; };
struct B : public A { };
struct C : public A { };
struct G : public B, public C { };
int main()
{
G v;
cout << G::B::A::a << endl;
cout << v.B::A::a << endl;
}
lỗi GCC (theo một số ý kiến, không có sự nhập nhằng trong kêu vang):
main.cpp:15:18: error: 'A' is an ambiguous base of 'G'
cout << v.B::A::a << endl;
Tôi biết tôi đã nhìn thấy một cái gì đó như thế này một tháng hoặc lâu hơn trước đây. Tôi tin rằng nó không biết cha mẹ để sử dụng trong trường hợp 'v'. Đang cố gắng tìm nó. – NathanOliver
@barakmanos Chính xác, tôi đang nghiên cứu trường hợp khi tôi không cần thừa kế ảo. –
Điều này biên dịch thành công với tiếng kêu. – interjay