[英]multidimensional array of objects in c++
我正在编写作业(创建虚拟世界),遇到了一件我无法逾越的事情。 我有一个有机体课,它是所有未来继承动物(动物等)的抽象,而世界类则代表这些对象的世界。 但是在后者中,我无法创建一系列有机体-存储每个现有有机体的位置。
它会抛出:“语法错误:在'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();
};
C ++中没有这种new Type[size1][size2]
构造,但是您可以执行以下操作:
int** mesh = new int*[size1];
for( int i = 0; i < size1; i++ ) {
mesh[i] = new int[size2];
for( int j = 0; j < size2; j++ ) {
mesh[i][j] = 0;
}
}
或只使用std::vector
std::vector< std::vector<Type> > mesh;
或使用大小为size1 * size2
单个std::vector
并根据i
和j
计算索引: index = i * size1 + j
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.