C ++ C2100初始化struct变量的非法间接

时间:2018-04-13 00:13:17

标签: c++ visual-studio-2017

我正在使用“VS2017社区”,平台Windows 7.我在下次尝试时遇到错误C2100:

foo

谁能告诉我这里有什么问题?感谢。

3 个答案:

答案 0 :(得分:3)

此结构没有构造函数。您需要的代码如下:

struct Conf {
    unsigned int id;
    int test1;
    int test2;
    int test3;
    int test4;
    int test5;
    int test6;
};

Conf cf = {
    0,
    0,
    0,
    0,
    0,
    0,
    0
}; // Array initializer for struct type.

答案 1 :(得分:3)

取下圆括号。编译器正在尝试使用构造函数。

#include <iostream>
struct Conf {
    unsigned int id;
    int test1;
    int test2;
    int test3;
    int test4;
    int test5;
    int test6;
};

Conf cf {  // Curlies only
    1u,
    0,
    0,
    0,
    0,
    0,
    7
}; 

int main() {
    std::cout << cf.id << " " << cf.test6 << '\n';
    return 0;
}

答案 2 :(得分:1)

我认为问题是Most vexing parse其中

section { width: 300vw; display: flex; flex-wrap: wrap; > div { display: flex; } } div { width: 100vw; height: 100vh; &:nth-child(1) { background: purple; } &:nth-child(2) { background: red; } &:nth-child(3) { background: yellow; } &:nth-child(4) { background: green; } &:nth-child(5) { background: papayawhip; } &:nth-child(6) { background: orange; } } 被理解为具有临时Conf cf({..});对象作为参数的函数。

临时Conf对象按列表初始化,如下所示。

来自dcl.init#17.1

  

如果初始化程序是(非括号)braced-init-list或=   braced-init-list,对象或引用是 list-initialized

Conf

所以直接列出初始化struct S2 { int m1; double m2, m3; }; S2 s21 = { 1, 2, 3.0 }; // OK S2 s22 { 1.0, 2, 3 }; // error: narrowing

cf