1

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

在这个简单的示例中,我展示了 3 种类型的 position AB并且C它们都继承自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];
}

如果我将 type 的位置传递给这个函数,一切都会好起来的B,但是如果我传递 typeA呢?我需要这样做。

4

1 回答 1

1

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

struct Position1 
{
    int a;
};

struct Position2 : public Position1
{
    int b;
};

struct Position3 : public Position2
{
    int c;
};

struct Position4 : public Position3
{
    int d;
};

这样,您可以在需要 a或的Position4任何地方使用 a Position1,并且代码将忽略额外的维度。Position2Position3

于 2013-07-07T22:51:40.133 回答