C++中的向量和结构
Vectors and Structs in C++
我正在尝试制作一个包含多种数据类型和向量的数据树。到目前为止,我所拥有的如下所示:
struct VertStruct{
double X, Y, Z;
};
struct FaceStruct{
int F1, F2, F3, F4;
};
struct FaceNormalStruct{
double X, Y, Z;
};
struct LODStruct{
std::vector<VertStruct> Verts;
std::vector<FaceStruct> Faces;
std::vector<FaceNormalStruct> FaceNormals;
};
struct ChunkStruct{
std::vector<LODStruct> LOD;
};
int main(){
std::vector<ChunkStruct> Chunk;
Chunk.resize(100);
for(int i = 0; i < 100; i++)
{
Chunk[i].LOD.resize(5);
for(int j = 0; j < 5; j++)
{
Chunk[i].LOD[j].Verts.resize(36);
Chunk[i].LOD[j].Faces.resize(25);
Chunk[i].LOD[j].FaceNormals.resize(25);
}
}
return 1;
}
现在这编译得很好,正是我想要的,但是,如果我尝试将值设置为类似以下内容:
int Number = 42;
Chunk[5].LOD[4].Verts[3] = Number;
然后我收到以下错误:
main.cpp|126|error: no match for 'operator=' in 'Chunk.std::vector<_Tp, _Alloc>::operator[] [with _Tp = ChunkStruct, _Alloc = std::allocator<ChunkStruct>](5u)->ChunkStruct::LOD.std::vector<_Tp, _Alloc>::operator[] [with _Tp = LODStruct, _Alloc = std::allocator<LODStruct>](4u)->LODStruct::Verts.std::vector<_Tp, _Alloc>::operator[] [with _Tp = VertStruct, _Alloc = std::allocator<VertStruct>](3u) = Number'|
那么我错过了什么还是我试图做的事情是不可能的?
Verts[3]
的类型为 VertStruct
,Number
是int
,因此无法分配(使用发布的代码(。您可以将 VertStruct
的一个成员指定为分配的目标:
Chunk[5].LOD[4].Verts[3].X = Number;
如果您希望能够将int
分配给VertStruct
,请提供一个operator=(int)
(如 Luchian 已经提到的(,但在我看来,在调用站点上,int
值分配给哪个成员会非常模棱两可:
struct VertStruct
{
double X, Y, Z;
VertStruct& operator=(int d)
{
X = d; // Or 'Y' or 'Z' or all.
return *this;
}
};
Chunk[5].LOD[4].Verts[3]
是一个VertStruct
,你不能给它赋一个整数。
你错过了一些东西,这并非不可能(如果你能想象的话,一切皆有可能。这就是成为科学家的意义所在(:)
Chunk[5]
返回一个ChunkStruct
。
Chunk[5].LOD
返回一个std::vector<LODStruct>
。
Chunk[5].LOD[4]
返回一个LODStruct
。
Chunk[5].LOD[4].Verts
返回一个std::vector<VertStruct>
。
最后,Chunk[5].LOD[4].Verts[3]
返回一个VertStruct
。然后您尝试为其分配int
。显然,不会使用您的代码。
要使其正常工作(此确切语法(,您应该重载operator = (int x)
.否则,请将int
分配给所需的任何成员。
您正在分配一个数字,该数字是int
VertStruct
,这是一个struct
,有 3 个字段(X、Y、Z(。如果要设置 X 坐标,请执行以下操作:
Chunk[5].LOD[5].Verts[3].X = Number;
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员