编译器说变量不是类的成员

扎卢

我在网格的默认构造函数的前两行收到编译器错误“错误:wall不是Grid的成员”。我不确定为什么要在我的头文件中同时定义墙和网格的原因!我也尝试过使用this-> wall,Grid :: wall和初始化列表。这是代码:

Grid::Grid() {
    this->wall = Species("wall");
    this->empty = Species("empty");
    Grid::turn_number = 0;
    int a,b;
    for(a= 0; a < 100; a++)
        for(b = 0; b< 100; b++) {
            Creature empty_creature = Creature(Grid::empty,a,b,NORTH,this);
            ((Grid::map)[a][b]) = empty_creature;
        }
    Grid::width = 0;
    Grid::height = 0;
}

当我更改默认构造函数以使用初始化列表时,会出现相同的错误:

Grid::Grid()
: width(0), height(0), turn_number(0), wall("wall"), empty("empty"){
    int a,b;
    for(a= 0; a < 100; a++)
        for(b = 0; b< 100; b++) {
            Creature empty_creature = Creature(Grid::empty,a,b,NORTH,this);
            ((Grid::map)[a][b]) = empty_creature;
        }
}

在标题文件中:

class Grid {
protected:
    Creature map[100][100];
    int width,height;
    int turn_number;
    Species empty;
    Species wall;
public:
    Grid();
    Grid(int _width, int _height);
    void addCreature(Species &_species, int x, int y, Direction orientation);
    void addWall(int x, int y);
    void takeTurn();
    void infect(int x, int y, Direction orientation, Species &_species);
    void hop(int x, int y, Direction orientation);
    bool ifWall(int x, int y, Direction orientation);
    bool ifEnemy(int x, int y, Direction orientation, Species &_species);
    bool ifEmpty(int x, int y, Direction orientation);
    void print();
};

这是其余的编译器错误(在注释中要求)。对不起格式,我的计算机出于某种原因吐出了奇怪的字符。

Darwin.c++: In constructor ‘Grid::Grid()’:
Darwin.c++:8:40: error: class ‘Grid’ does not have any field named ‘wall’
Darwin.c++:8:54: error: class ‘Grid’ does not have any field named ‘empty’
Darwin.c++:12:39: error: ‘empty’ is not a member of ‘Grid’
Darwin.c++: In constructor ‘Grid::Grid(int, int)’:
Darwin.c++:17:86: error: class ‘Grid’ does not have any field named ‘wall’
Darwin.c++:17:99: error: class ‘Grid’ does not have any field named ‘empty’
Darwin.c++:21:39: error: ‘empty’ is not a member of ‘Grid’
Darwin.c++: In member function ‘void Grid::addWall(int, int)’:
Darwin.c++:32:31: error: ‘wall’ is not a member of ‘Grid’
Darwin.h:35:10: error: field ‘empty’ has incomplete type
Darwin.h:36:10: error: field ‘wall’ has incomplete type
In file included from RunDarwin.c++:33:0:
Darwin.h:35:10: error: field ‘empty’ has incomplete type
Darwin.h:36:10: error: field ‘wall’ has incomplete type
本·沃格特

“类型不完整”表示您尚未为编译器提供的定义Species没有定义,最多只能有一个指向数据的指针,因为编译器不知道要保留多少空间。因此,它给出一个错误,然后忽略该行,并尝试使程序的其余部分有意义。当然,由于忽略了该行,因此以后尝试使用它将会失败。

请注意,您的编辑器已按文件名对错误进行了排序,而不是向您显示错误的实际发生顺序。将来,请按顺序查看编译器输出。

通过将定义(或#include)放在Speciesbefore可以轻松解决所有问题class Grid

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译器说,通用类方法直接或间接引用自身,但不是

来自分类Dev

编译器说indexOf函数不是函数

来自分类Dev

使用 using 别名成员模板 typedef 使编译器认为它不是类模板

来自分类Dev

为什么我的C ++编译器说虚拟成员没有定义?

来自分类Dev

为什么我的C ++编译器说虚拟成员没有定义?

来自分类Dev

在类中嵌套静态const成员变量初始化Clang vs GCC哪个编译器正确?

来自分类Dev

变量不是类的成员

来自分类Dev

为什么编译器说接口中的公共静态字段是“最终”,尽管不是

来自分类Dev

当编译器说“在基类中找不到”时,如何覆盖方法?

来自分类Dev

为什么编译器说我的过程中未声明我的表单变量?

来自分类Dev

为什么编译器说我的过程中未声明我的表单变量?

来自分类Dev

ember-rails:编译器说:ReferenceError:找不到变量:window

来自分类Dev

类继承:编译器无法识别的类的构造函数和成员函数

来自分类Dev

编译器认为我构建的 MatrixXd 是一个函数而不是成员

来自分类Dev

模板成员函数的编译器错误

来自分类Dev

强制编译器为模板类的所有成员函数生成代码?

来自分类Dev

编译器为类生成noexcept ctor,而成员没有这样的保证

来自分类Dev

编译器为什么不能识别我的类型参数化测试夹具类的成员?

来自分类Dev

std线程调用模板类的模板成员函数:编译器错误

来自分类Dev

通过指针访问类的成员时出现“ unqualified-id”编译器错误

来自分类Dev

使用std :: function类成员进行编译器优化时出现段错误

来自分类Dev

我可以要求编译器禁止定义模板类成员函数的通用版本吗?

来自分类Dev

模板类的std线程调用模板成员函数:编译器错误

来自分类Dev

我定义的类的成员出现C ++ Vector数据类型编译器错误问题

来自分类Dev

编译器为类生成noexcept ctor,而成员没有这样的保证

来自分类Dev

如果规则会阻止编译器对全局/成员变量的访问进行重新排序?

来自分类Dev

如果返回成员变量,编译器是否执行返回值优化?

来自分类Dev

编译器抱怨未分配的结构变量,但允许分配成员-为什么?

来自分类Dev

C2679编译器从std :: istream构造const int成员变量时出错

Related 相关文章

  1. 1

    编译器说,通用类方法直接或间接引用自身,但不是

  2. 2

    编译器说indexOf函数不是函数

  3. 3

    使用 using 别名成员模板 typedef 使编译器认为它不是类模板

  4. 4

    为什么我的C ++编译器说虚拟成员没有定义?

  5. 5

    为什么我的C ++编译器说虚拟成员没有定义?

  6. 6

    在类中嵌套静态const成员变量初始化Clang vs GCC哪个编译器正确?

  7. 7

    变量不是类的成员

  8. 8

    为什么编译器说接口中的公共静态字段是“最终”,尽管不是

  9. 9

    当编译器说“在基类中找不到”时,如何覆盖方法?

  10. 10

    为什么编译器说我的过程中未声明我的表单变量?

  11. 11

    为什么编译器说我的过程中未声明我的表单变量?

  12. 12

    ember-rails:编译器说:ReferenceError:找不到变量:window

  13. 13

    类继承:编译器无法识别的类的构造函数和成员函数

  14. 14

    编译器认为我构建的 MatrixXd 是一个函数而不是成员

  15. 15

    模板成员函数的编译器错误

  16. 16

    强制编译器为模板类的所有成员函数生成代码?

  17. 17

    编译器为类生成noexcept ctor,而成员没有这样的保证

  18. 18

    编译器为什么不能识别我的类型参数化测试夹具类的成员?

  19. 19

    std线程调用模板类的模板成员函数:编译器错误

  20. 20

    通过指针访问类的成员时出现“ unqualified-id”编译器错误

  21. 21

    使用std :: function类成员进行编译器优化时出现段错误

  22. 22

    我可以要求编译器禁止定义模板类成员函数的通用版本吗?

  23. 23

    模板类的std线程调用模板成员函数:编译器错误

  24. 24

    我定义的类的成员出现C ++ Vector数据类型编译器错误问题

  25. 25

    编译器为类生成noexcept ctor,而成员没有这样的保证

  26. 26

    如果规则会阻止编译器对全局/成员变量的访问进行重新排序?

  27. 27

    如果返回成员变量,编译器是否执行返回值优化?

  28. 28

    编译器抱怨未分配的结构变量,但允许分配成员-为什么?

  29. 29

    C2679编译器从std :: istream构造const int成员变量时出错

热门标签

归档