Вы можете использовать CLI artisan
в Lumen так же, как в Laravel, но с меньшим количеством встроенных команд. Чтобы увидеть все встроенные команды, используйте команду php artisan
в Lumen.
Хотя в Lumen нет команды make:command
, вы можете создать свою собственную команду:
Добавить новый класс команд в папку app/Console/Commands
, вы можете использовать образец класса шаблон фреймворка serve
команда
Зарегистрируйте свою пользовательскую команду, добавив созданный класс к члену $commands
в файле app/Console/Kernel.php
.
Кроме генерации команд, вы можете использовать документы Laravel для команд при работе с Lumen.
Ваш код вызывает не стандартный конструктор, а конструктор копирования, поэтому вы обращаетесь к неинициализированному указателю.
Интересное чтение о самостоятельном назначении: http://www.gotw.ca/gotw/011.htm
В частности, обратите внимание на «Постскриптум №1» в отношении этот вопрос и некоторые из полученных ответов.
В соответствии со стандартом (12.6.1 [class.expl.init]) самоинициализация совершенно законна.
Следовательно, следующее допустимо.
A a = a;
Вы просто необходимо написать свой конструктор копирования, чтобы работать с ним правильно.
A(const A& rv)
{
if(&rv == this) {
p = new int(0);
return;
}
p = new int(*rv.p);
}
Изменить: обновлен код на основе комментариев.
A a = a;
определенно не надо писать. Но можно было бы записать a = a
. Ваш оператор присваивания должен проверять & rv == this
и ничего не делать в случае самокопирования.
О, да, вам действительно нужно написать оператор присваивания для класса A.