Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 完全限定静态成员变量中的模糊性_C++_Multiple Inheritance_Fully Qualified Naming - Fatal编程技术网

C++ 完全限定静态成员变量中的模糊性

C++ 完全限定静态成员变量中的模糊性,c++,multiple-inheritance,fully-qualified-naming,C++,Multiple Inheritance,Fully Qualified Naming,在这个示例代码中,有两个句子显示相同的静态变量。第一个没有歧义,但第二个有歧义,为什么 #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; cou

在这个示例代码中,有两个句子显示相同的静态变量。第一个没有歧义,但第二个有歧义,为什么

#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;
}
#包括
使用名称空间std;
结构A{static const char A='A';};
结构B:公共A{};
结构C:公共A{};
结构G:公共B,公共C{};
int main()
{
gV;

cout这显然是GCC中的一个bug,正如a建议您报告的那样。但是,在修复之前,您可以使用如下讨厌的解决方法:

std::cout << static_cast<B &>(v).A::a;

std::我知道我大约一个月前看到过类似的东西。我相信它不知道在
v
案例中使用哪一个父级。正在尝试找到它。这可以通过clang成功编译。@Peregring lk,大约容易阅读和理解20倍。你的大多数示例都是不相关的噪音,只是模糊了事物。EDG接受它oo。请报告一个GCC错误(如果您找不到现有的错误),并提供最少的示例(不是您冗长的原始示例)。谢谢。@JonathanWakely,我认为,您澄清的示例值得回答。
std::cout << static_cast<B &>(v).A::a;