C 中的对象的多维阵列
multidimensional array of objects in c++
我正在写作业(创建虚拟世界(,而且我遇到了一件我无法浏览的事情。我有阶级生物体,它是所有未来继承的生物(动物等(和阶级世界,代表这些物体的世界。在后者中,我无法创建一系列生物 - 存储每个现有生物的位置。
它投掷:"语法错误:缺少'token1''token2'
我在想,也许这与彼此有关(有机体提到某些世界,某些世界想要创建各种有机体(,但是默认的构造器正在解决IMO。
你能告诉我我监督什么吗?预先感谢。
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;
}
}
} ....
有机体.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
相关文章:
- 什么时候调用组成单元对象的析构函数
- 完美的对象转发阵列
- C 中的对象的多维阵列
- 如何保存模板的对象阵列进行文件
- 指针阵列在一个对象数组中函数
- C 对象阵列删除一个
- 在阵列中向上移动对象
- 将指针添加到成员对象中的指针动态阵列
- 2D 阵列/网格中的对象移动
- 存储2D对象阵列的最佳方法是什么
- 为三维阵列中的特定图元创建对象
- 如何使用“顶点阵列”对象
- visual C++新与Malloc的对象动态内存阵列
- 旋转顶点阵列对象不起作用
- 多暗对象的多暗阵列和仅包含一个暗对象的一个较高暗的阵列之间的区别是什么
- 用于融合对象阵列的通用函数
- OpenCV-创建材质对象阵列
- 从对象阵列中选择一个随机对象
- 基于组件的游戏对象的阵列和地图之间的优点和缺点
- 2D对象阵列内存问题C++