指针和数组问题

Ben*_*Ben 1 c++ pointers

在C++中,我遇到指针等问题.如何解决以下问题?

错误:''='中的'operator ='不匹配(stage-> Stage :: tiles +((unsigned int)(((unsigned int)t)*12u)))=(operator new(12u),(,((瓷砖*))))"| 注意:候选人是:Tile&Tile :: operator =(const Tile&)|*

stage.h

#include "Tile.h"

class Stage {
    public:
        Tile *tiles;
        int size;
        void init(int size);
};
Run Code Online (Sandbox Code Playgroud)

stage.cpp

void Stage::init(int size) {
    this->size = size;
    this->tiles = new Tile[size];
}
Run Code Online (Sandbox Code Playgroud)

application.cpp

#include "Stage.h"
#include "Tile.h"

bool setTiles( Stage * stage ) {

    for( int t = 0; t < stage->size; t++ ) {
        stage->tiles[t] = new Tile();
    }

    return true;
}

stage.init(1234);
setTiles( &stage );
Run Code Online (Sandbox Code Playgroud)

另外,我真的不知道何时使用object.attribute以及何时使用object->attribute

MGZ*_*ero 6

stage->tiles[t] = new Tile();
Run Code Online (Sandbox Code Playgroud)

你在一个不是指针的东西上调用新东西.是的,tiles是指向数组的指针,但是,该数组的每个元素都不是指针.为了完成这项工作,您需要一个指针数组或指向指针的指针,例如:

Tile **tiles;
Run Code Online (Sandbox Code Playgroud)

您还可以做的是创建一个单独的指针对象,分配它,然后使用将数据复制到您的数组元素

stage->tiles[i] = *somePointer;
Run Code Online (Sandbox Code Playgroud)

然后删除指针以释放分配的内存.这将保留副本,因为您调用了复制构造函数.