C ++如何获取父数据类型的sizeof?
C++ How to get sizeof of parent datatype?
- 我有包含结构 B 的结构 A。
- 我想在里面有一个int
struct B 保存 struct A 的大小 ().
- 但是,结构 B 有一个
大小未知的向量,随时可能不同。
- 易变的
vector 会不断改变结构 A 的大小。
我如何在不创建指针的情况下执行此操作?
struct A {
struct B {
std::vector<int> some_Vector; // unknown size
size_t A_size = ????; // must always return the total size of A
};
B struct_B;
};
向量本身的大小(由sizeof
给出)是恒定的,不会受它包含多少元素的影响。区分它的"logical size"和"physical size"。毕竟,sizeof(std::vector<int>)
必须求值,而向量中没有任何对象,根本就没有向量。 vector的内容只影响成员返回的值std::vector::size
.
因此每个结构的大小将是恒定的。您只需要在两个结构都完全定义后获取它。您可以使用构造函数来完成它。而不是默认的初始值设定项。
struct A {
struct B {
std::vector<int> some_Vector;
size_t A_size;
B();
};
B struct_B;
};
A::B::B() : A_size{sizeof(A)}, some_Vector{} {
}
不过,坦率地说,我看不出任何人想要捕获 sizeof
结构并在 运行 时坚持下去的原因。正如我已经说过的,它是不变的。
- 我有包含结构 B 的结构 A。
- 我想在里面有一个int struct B 保存 struct A 的大小 ().
- 但是,结构 B 有一个 大小未知的向量,随时可能不同。
- 易变的 vector 会不断改变结构 A 的大小。
我如何在不创建指针的情况下执行此操作?
struct A {
struct B {
std::vector<int> some_Vector; // unknown size
size_t A_size = ????; // must always return the total size of A
};
B struct_B;
};
向量本身的大小(由
sizeof
给出)是恒定的,不会受它包含多少元素的影响。区分它的"logical size"和"physical size"。毕竟,sizeof(std::vector<int>)
必须求值,而向量中没有任何对象,根本就没有向量。 vector的内容只影响成员返回的值std::vector::size
.因此每个结构的大小将是恒定的。您只需要在两个结构都完全定义后获取它。您可以使用构造函数来完成它。而不是默认的初始值设定项。
struct A { struct B { std::vector<int> some_Vector; size_t A_size; B(); }; B struct_B; }; A::B::B() : A_size{sizeof(A)}, some_Vector{} { }
不过,坦率地说,我看不出任何人想要捕获 sizeof
结构并在 运行 时坚持下去的原因。正如我已经说过的,它是不变的。