У меня возник вопрос о создании 2D-вектора объектов во время создания объекта.C2280: «попытка ссылки на удаленную функцию» для конструктора копирования, CC248 «'operator =' не может получить доступ к закрытому члену, объявленному в классе» (Cocos2dx)
Background: У меня есть класс под названием Dungeon, которому нужен 2D-вектор объектов Tile. (Vector, так как я могу изменить размер, так как пока конкретизации я не знаю размеры вектора.)
Ошибка:
Error C2280 'Tile &Tile::operator =(const Tile &)': attempting to reference a deleted function MyCppGame c:\users\dante\git\yshacpp\mycppgame\classes\tile.cpp 18
UPDATE: Теперь я получаю Error C2248 'cocos2d::Sprite::operator =': cannot access private member declared in class 'cocos2d::Sprite'
- Может быть Вопрос о cocos2D-X с Sprite operator=
? Ввод деклараций Sprite в public
не помогло, но я заподозрив что-то с cocos2d-X ....
Мои подозрения (в новой редакции):cocos2d::Sprite* floor, item, overlay, ceiling;
внутри моего Tile
класса, кажется, вызывает эту ошибку выбросить.
Что я пытался: Написал собственный экземпляр-конструктор для плитки.
Может быть, мои подозрения ошибочны, но если кто-то может позволить мне знать, почему это происходит, я буду благодарен!
CPP файл класс (плитка)
#include "Tile.h"
Tile::Tile() : block(false), hasCharacter(false) { /* Nothing */ }
Header файл класс Tile
#ifndef __TILE_H__
#define __TILE_H__
#include ...
class Tile {
protected:
bool deepCopy(const Tile& copyTile) {
bool result = false;
if (©Tile != this) {
this->character = copyTile.character;
this->floor = copyTile.floor;
this->item = copyTile.item;
this->overlay = copyTile.overlay;
this->ceiling = copyTile.ceiling;
result = true;
}
return result;
}
cocos2d::Sprite* floor, item, overlay, ceiling;
// private: // nothing atm
public:
bool block, hasCharacter;
Character character;
Tile();
Tile(const Tile& copyTile) { deepCopy(copyTile); };
Tile& operator=(const Tile& copyTile) { deepCopy(copyTile); return *this; }
//~Tile();
};
#endif // __TILE_H__
У вас не может быть вектор несъемных несдвижных объектов, поскольку вектор должен копировать объекты (или перемещать их). – immibis
'operator =' является оператором присваивания, а не конструктором копирования –
, вероятно, 'Символ' не копируется, поэтому оператор неявного присваивания' Tile' удален –