54

検討:

struct box
{
    int array[3];
};

int main()
{
    box a = {1};
}

上記が C++ で機能する場合、次の機能が機能しないのはなぜですか?

struct box
{
    int simple_int;
};

int main()
{
    box b = 2;
}

理由は何ですか?

4

2 に答える 2

18

構文が間違っているため、機能しません。必要に応じて、暗黙のコンストラクターを使用して b = 2 のサポートを追加できます。

box b = {2}; // correct syntax with no constructor

または

struct box
{
    // implicit constructor
    box(int i) : i(i) {}
    int i;
};

box b(2);
box c = 2;

または

struct box
{
    explicit box(int i) : i(i) {}
    int i;
};

box b(2);
box c = 2; // disallowed
于 2013-07-29T13:55:27.987 に答える