world.push_back(std::move(terr));
world
хранит std::unique_ptr<object>
, но std::move(terr)
вернет std::unique_ptr<Terrain>&&
. Чтобы в push_back
передать правильный std::unique_ptr<object>&&
будет использован конструктор преобразования (6). Это произойдет без проблем, но вот что потеряется - так это указание, какой именно деструктор нужно вызвать.vector<object>
означает вектор инстанций. Там будут храниться обособленные объекты. В частности, в коде vector<object> wld = { terr }
ты сказал неявно сузить экземпляр Terrain
до экземпляра object
и инициализировать вектор копией этого экземпляра.wld
ты мог обратиться к объекту terr
, в векторе тебе нужно хранить указатели.object
из вектора wld
ты мог получить данные о coords
, твой тип Terrain
должен оперировать полями object
, а от дубликатов этих полей в Terrain
нужно избавиться.А сейчас компилятор обращается к свойству coords класса object.
using namespace std;
. Это крайне плохая практика, если коротко. vector<object> wld = { terr };
Что то вроде:
Competition comp; comp.team.TeamChange();
Можно ли обратиться к методам класса, экземпляр которого находится в другом классе?
но на одном из тестов падает с флагом - RE
А вот как работать с текстом utf-8?
std::wstring
и пользоваться как обычно. Когда наиграешься - конвертируй обратно в utf-8 и сохраняй в std::string
.std::string
, а перед работой с функциями операционной системы или перед выводом пользователю преобразовывать строку в Unicode.а не знаешь как поделить строку на символы(тот же split() из питона)
С моей точки зрения оба ответа являются исчерпывающими для твоего вопроса.