Обычно я создаю класс A, а другой класс B объявляется членом класса A. Если я это делаю, я получаю сообщение об ошибке удаленной функции.
Однако, если я объявляю класс B в одной из функций класса A, я не получаю эту ошибку. Я получаю ошибку
.... неявно удаляется, потому что определение по умолчанию будет неправильно сформировано ... использование удаленной функции ...
Я знаю, что кто-то не может объяснить точную причину, по которой это происходит, но я не совсем понимаю, что означает эта ошибка и почему она происходит, только если я объявляю класс B членом, а не объектом в функция. Любое объяснение, почему или как отладить, почему это происходит?
Хотя код сложный, описываемое мной отличие выглядит следующим образом.
Это дает мне ошибку:
class A: public Base {
void do_stuff();
B obj_b;
}
Это не дает мне ошибку:
class A: public Base {
void do_stuff()
{
B obj_b;
};
}
Это также не дает мне ошибку:
class A: public Base {
void do_stuff();
static B obj_b;
}