在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?
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)
然后删除指针以释放分配的内存.这将保留副本,因为您调用了复制构造函数.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |