C ++:结构本身的实例访问

时间:2018-07-27 21:16:04

标签: c++ vector struct initialization

我在代码中遇到了一个非常不寻常的问题。 struct必须能够访问其自身的实例。

代码的相关部分:

struct crtr {
  char f;
  void foo() {
    for(int i=0; i<creatures[f].size(); i++) {/*code that accesses creatures[f][i]*/}
  }
};

vector<crtr> creatures[10];

当然,这远远不能满足要求-crtr.foo()需要creatures,而creatures需要crtr。是否有某种方法可以在creatures之前初始化crtr,也许可以更改vector的数据类型? (如果可能,最好使用最少的指针)

2 个答案:

答案 0 :(得分:1)

我一定很想念东西,这是怎么回事?

struct crtr {
  char f;
  void foo();
};

vector<crtr> creatures[10];

void crtr::foo() {
    for(int i=0; i<creatures[f].size(); i++) {/*code that accesses creatures[f][i]*/}
}

如果需要,crtr::foo也可以内联。

答案 1 :(得分:1)

使用结构的前向声明:

Error CodeScriptFailed
Script Nameaws/validateService.sh
MessageScript at specified location: aws/validateService.sh failed with exit code 4
Log TailLifecycleEvent - ValidateService
Script - aws/validateService.sh
[stderr]--2018-07-27 20:23:12--  http://localhost:8081/
[stderr]Resolving localhost (localhost)... 127.0.0.1
[stderr]Connecting to localhost (localhost)|127.0.0.1|:8081... failed: Connection refused.