【发布时间】:2018-09-10 12:26:39
【问题描述】:
我正在写作业(创建虚拟世界),但遇到了一件我无法逾越的事情。我有类 Organism ,它是所有未来继承对象(动物等)的抽象,还有代表这些对象世界的 World 类。在后者中,我无法创建一系列有机体 - 存储每个现有有机体的位置。
它抛出: “语法错误:在‘token2’之前缺少‘token1’
我在想这可能与它相互引用有关(有机体引用了某个世界并且某个世界想要创建有机体数组)但默认构造函数正在解决这个问题。
你能告诉我监督了什么吗?提前致谢。
World.h
#pragma once
class World
{
private:
int sizeX;
int sizeY;
Organism * worldMesh;
public:
World(int sizeX, int sizeY);
void nextTurn();
void drawWorld();
int getWorldX();
int getWorldY();
~World();
};
World.cpp
#include "stdafx.h"
#include "World.h"
#include <iostream>
using namespace std;
World::World(int sizeX, int sizeY)
{
this->sizeX = sizeX;
this->sizeY = sizeY;
worldMesh = new Organism[sizeX][sizeY];
for (int i = 0; i < sizeX; i++) {
for (int j = 0; j < sizeY; j++) {
worldMesh[i][j] = NULL;
}
}
} ....
Organism.h
#pragma once
#include "World.h"
#include "Position.h"
class Organism
{
protected:
int strength;
int initiative;
Position * position;
static World * world;
public:
Organism();
Organism(World * world);
int randValue();
virtual void spawn();
virtual void action();
virtual void collision();
void kill();
virtual ~Organism();
};
【问题讨论】:
-
我没有在这段代码中看到错误。请注意,如果
sizeY不是常量,则new Organism[sizeX][sizeY]将无法在没有非标准扩展的情况下工作。请发帖minimal reproducible example。 -
worldMesh 是一个指针。它不是二维数组。如果您希望它知道它的形状,请使用 std::array 或 std::vector。
-
@Wally 即使它们是不变的也不会起作用。不能指向这样的二维数组。
-
不相关。里面有很多指针。记住指针的一大缺点:必须有人清理。你确定要指针吗?
标签: c++ class multidimensional-array