c++ - C++中的多维对象数组,我无法初始化它!

标签 c++ arrays pointers object multidimensional-array

C++菜鸟又来了

我正在使用 VC++ VS2008 并尝试创建一个数组数组。我想存储的所有对象我都想放在堆上。

在数组中,它只是指针。

这是一些代码:

Grid.h

#include "Tile.h"

class Grid
{
public: 
    Tile* grid_ptr[8][8];
...
...
};

Grid.cpp

#include "stdafx.h"
#include "Grid.h"

...
...
void Grid::Initialize()
{
    for(int i = 0; i < 8; i++)
    {
        Grid::grid_ptr[i][0] = new Tile::Tile(10,10);
        for (int j = 0; j < 8; j++)
        {
            Grid::grid_ptr[i][j] = new Tile::Tile(10,10);
        }

    }
}
...
...
}

一切正常,包括瓷砖结构。这似乎是一个语法错误,因为编译器给我这个

错误 1 ​​错误 C2061:语法错误:标识符“{ctor}”

错误 2 错误 C2061:语法错误:标识符“{ctor}”

一直都是同一个故事。不幸的是,这让我的整个工作陷入停顿,我非常感谢对此的解决方案。

简而言之。如何正确创建一个大小为 8x8 的数组,其中填充了引用各自图 block 对象的指针?

这样使用内存是否可行或明智?

请记住,我确实阅读了很多关于此的示例,并且使用整数或其他数据类型这样做是成功的。然而,这根本不是我想要分配的

Tile.h here and Tile.cpp below

class Tile
{       
public:

private:
    enum TileOccupation
    {
        EmptyTile = 0,
        WhiteSphere = 1,
        BlackSphere = 2
    };

    unsigned short horizontalDimensions;
    unsigned short verticalDimensions;

public:
    Tile();
    Tile(unsigned short horizontalDimensions, unsigned short verticalDimensions);
    ~Tile();

void Update();
void Draw();


};

> Tile.cpp

#include "stdafx.h"
#include "Tile.h"

Tile::Tile()
{

}

Tile::Tile(unsigned short horizontalDimensions, unsigned short verticalDimensions)
{

}

void Tile::Update()
{

}

void Tile::Draw()
{

}

最佳答案

你不想创建一个Tile::Tile(一个构造函数),你想创建一个Tile(一个对象)——改变new Tile::Tilenew Tile

此外还有漏水。删除这个:

Grid::grid_ptr[i][0] = new Tile::Tile(10,10);

//编辑

您可能对动态数组(我们在维度未知时使用的数组)感到困惑。您的数组是静态的(展位尺寸),您不必为其动态分配内存。它是您类(class)的一部分,并且是使用对象自动创建的,就像例如简单的 int 字段。

还有一个。考虑一下您是否真的必须动态创建图 block 。您会将瓷砖移入和移出阵列吗? Tile 是否比几个 int 大?如果任何问题的答案都是“否”,那么静态分配对您来说就可以了:

Tile grid_ptr[8][8];

关于c++ - C++中的多维对象数组,我无法初始化它!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3565316/

相关文章:

c - 从不可变字符串返回 const char**

c++ - 从多个 C++ 和 C 目标文件生成单个 .so

将整数转换为另一个字符指针

c++ - 在 Mac 上填充菜单栏

c++ - 结构数组,其中包含数组。不会编译

javascript - 如何使用 Javascript 执行字符串拆分并访问数组的值?

c - 当指针有偏移量时,realloc 崩溃

c - 更新一个指向空指针的指针

c++ - 使用 string::find_first_not_of 和 string::find_last_not_of 的问题

c++ - boost::any_range 和运算符 []