1

我一直在使用初始化列表来实例化结构的实例,但现在想添加一个默认构造函数。

struct Size {
    unsigned int width;
    unsigned int height;
};

void SizeFunc(Size const &size) { }

int main() {
    SizeFunc({1024, 768});   // OK.
}

不幸的是,在使用初始化列表进行实例化时,添加默认构造函数会导致错误。

struct Size {
    Size() : width(1920), height(1080) { }

    unsigned int width;
    unsigned int height;
};

void SizeFunc(Size const &size) { }

int main() {
    Size size; // OK.
    SizeFunc({1024, 768});    // error: no matching function for call to
                              // 'Size::Size(<brace-enclosed initializer list>)'
}

我需要添加什么构造函数才能使其工作?我尝试过使用带有 std::initializer_list 的构造函数,但到目前为止还没有成功。

4

1 回答 1

4

只需添加一个非显式构造函数,该构造函数采用两个无符号整数,用参数初始化成员。

Size(unsigned int width, unsigned int height) : width(width), height(height) {}
于 2013-08-14T09:20:15.167 回答