相关疑难解决方法(0)

包含常量成员的POD结构

使用此代码:

struct A
{
    int i;
    const int b;
};

// The union is to verify that A is a type that can be used in a union.
union U
{
    A a;
    int b;
};

int main()
{
    U a = {1, 1};
    U b = {2, 1};
}
Run Code Online (Sandbox Code Playgroud)

g ++版本4.8.3抱怨错误:

a.cpp:9:4: error: member ‘A U::a’ with copy assignment operator not allowed in union
  A a;
    ^
a.cpp:9:4: note: unrestricted unions only available with -std=c++11 or -std=gnu++11
Run Code Online (Sandbox Code Playgroud)

但是clang 3.5.0编译这段代码没有错误.哪一个是正确的?这是编译器错误吗? …

c++ const language-lawyer c++03

11
推荐指数
1
解决办法
876
查看次数

为什么在构建结构时在Visual C++ 2008中会收到这些警告?

我有这个代码

typedef struct
{
    const char* fooString;
    const bool  fooBool;
}fooStruct;
Run Code Online (Sandbox Code Playgroud)

而这个初始化程序:

static const fooStruct foo[] =
{
    {"file1", true},
    {"file2", false},
    ....
};
Run Code Online (Sandbox Code Playgroud)

使用此代码,我在VS2008中有3个警告:

error C2220: warning treated as error - no 'object' file generated  
warning C4510: '<unnamed-tag>' : default constructor could not be generated
warning C4512: '<unnamed-tag>' : assignment operator could not be generated
warning C4610: struct '<unnamed-tag>' can never be instantiated - user defined constructor required 
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++-2008 visual-c++

6
推荐指数
2
解决办法
3172
查看次数