gpt4 book ai didi

c++ - 对象位置的数据结构,不同的对象可以通过不同数量的索引进行索引

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:34 24 4
gpt4 key购买 nike

我有结构来描述项目中各种对象的位置。一些对象由两个或三个等索引索引。

在这个简单的示例中,我展示了 3 种类型的位置 ABC,它们都是继承自空的 Position。我继承自 Position 这样我就可以在采用 Position 参数的函数中传递这些位置。之所以我不使用单个 Position 结构是因为我必须将所有成员int a,b,c,d 在其中,对于某些对象,大多数时候我只会使用 ab例如:

struct Position {
};

struct A : public Position {
int a,b,c,d;
};

struct B : public Position {
int a,b,c;
};

struct C : public Position {
int a,b;
};

问题是,我有这样的功能:

City &getCity(const Position &p) {
const B &pos = (const B &)p;
return rawSheets[pos.a].countries[pos.b].cities[pos.c];
}

如果我将 B 类型的位置传递给此函数,一切都会好起来的,但是如果我传递类型 A 会怎样?我需要这样做。

最佳答案

看起来你真的想要一个职位类型的层次结构,每个都比前一个更具体,有点像这样:

struct Position1 
{
int a;
};

struct Position2 : public Position1
{
int b;
};

struct Position3 : public Position2
{
int c;
};

struct Position4 : public Position3
{
int d;
};

这样,您可以在需要 Position1Position2Position3 的地方使用 Position4,并且代码将忽略额外的维度。

关于c++ - 对象位置的数据结构,不同的对象可以通过不同数量的索引进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com