Я экспериментирую с семантикой перемещения в C ++, и у меня есть простой класс объект , который должен быть только подвижным - копирование отключено.
Вот класс:
class Entity {
public:
//...
Entity() = delete;
Entity(const Entity& entity) = delete;
explicit Entity(Mesh&& mesh) : mesh(std::move(mesh)) {
printf("Entity Created");
}
Entity(Entity&& entity) noexcept: mesh(std::move(entity.mesh)) {
printf("Inside the Entity move Constructor");
}
//...
private:
Mesh mesh;
};
< /code>
А вот как я пытаюсь его использовать: < /p>
//...
Entity e1(std::move(mesh_1));
Entity e2(std::move(mesh_2));
std::vector entities = {std::move(e1), std::move(e2)};
//...
< /code>
Эта строка вызывает следующую ошибку: < /p>
Ошибка: Статическое утверждение.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -type-when
Статическое утверждение не удалось: тип результата должен быть конструктивным из ввода типа при перемещении объектов в s ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение