如何在 C++ class 的初始化列表中初始化具有未命名结构的成员结构?
How to initialize member-struct with unnamed structure in initializer list of C++ class?
我有一个内部未命名结构的结构。我想在 class 初始化列表中初始化整个结构及其成员结构。
struct Foo {
int z;
struct {
double upper;
double lower;
} x, y;
};
class Bar {
Bar();
Foo foo;
};
这可以做到吗?
这个结构也可以初始化 "old fashion" 提供构造函数而不使用统一初始化语法的方式吗?
struct Foo {
Foo() : z(2), x(/*?*/), y(/*?*/) {}
Foo() : z(2), x.lower(2) {} // doesn't compile
int z;
struct {
double upper;
double lower;
} x, y;
};
如果我对你的理解是正确的,你想在 Bar
的初始化列表中初始化 struct Foo
,它包含一个 unnamed struct:
#include <iostream>
struct Foo {
int z;
struct {
double upper;
double lower;
} x, y;
};
class Bar {
public:
Bar();
Foo foo;
};
Bar::Bar()
: foo { 1, { 2.2, 3.3}, {4.4, 5.5} }
{
}
int main()
{
Bar b;
std::cout << b.foo.z << std::endl;
std::cout << b.foo.x.upper << std::endl;
std::cout << b.foo.y.lower << std::endl;
}
如果我理解正确的话,您希望对包括内部 未命名 结构在内的完整结构进行静态初始化。
你有没有试过:
Foo foo { 1, // z
{1.1, 2.2}, // x
{3.3, 4.4}}; // y
我有一个内部未命名结构的结构。我想在 class 初始化列表中初始化整个结构及其成员结构。
struct Foo {
int z;
struct {
double upper;
double lower;
} x, y;
};
class Bar {
Bar();
Foo foo;
};
这可以做到吗?
这个结构也可以初始化 "old fashion" 提供构造函数而不使用统一初始化语法的方式吗?
struct Foo {
Foo() : z(2), x(/*?*/), y(/*?*/) {}
Foo() : z(2), x.lower(2) {} // doesn't compile
int z;
struct {
double upper;
double lower;
} x, y;
};
如果我对你的理解是正确的,你想在 Bar
的初始化列表中初始化 struct Foo
,它包含一个 unnamed struct:
#include <iostream>
struct Foo {
int z;
struct {
double upper;
double lower;
} x, y;
};
class Bar {
public:
Bar();
Foo foo;
};
Bar::Bar()
: foo { 1, { 2.2, 3.3}, {4.4, 5.5} }
{
}
int main()
{
Bar b;
std::cout << b.foo.z << std::endl;
std::cout << b.foo.x.upper << std::endl;
std::cout << b.foo.y.lower << std::endl;
}
如果我理解正确的话,您希望对包括内部 未命名 结构在内的完整结构进行静态初始化。
你有没有试过:
Foo foo { 1, // z
{1.1, 2.2}, // x
{3.3, 4.4}}; // y