Nightmare1
@Nightmare1
Программист

Почему конструктор по умолчанию считается удаленным для моего класса?

Есть декларация класса в файле pure.hpp.

class ElementPurified_Constant : public BaseClasses::Nameable
{
    //GetterSetterClass()

    private:
        PurifiedElement_Constants _properties;

    public:
        ElementPurified_Constant();
        //ElementPurified_Constant(PurifiedElement_Constants);

        ~ElementPurified_Constant() {};

        const std::string GetEnergyLevelsFormatted();
};

//static std::list<ElementPurified_Constant> PurifiedElements;

} }


Есть код реализации.

#include "Pure.hpp"

using namespace Machinarium::Materials;

Machinarium::Materials::ElementPurified_Constant::ElementPurified_Constant()
{
}


61fce9c26e29d184883941.png

Что за попытка использования удалённой функции? Никогда такого не было, банальная имплементация конструктора функции.
  • Вопрос задан
  • 109 просмотров
Решения вопроса 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
PurifiedElement_Constants не имеет конструктора по умолчанию (очень неудобные названия у вас ElementPurified_Constant vs PurifiedElement_Constants - обратите внимание, ошибка не про ваш класс, а про тип _properties).

Т.е. член _properties в вашем классе нельзя сконструировать без каких-то параметров.

Вам надо в вашем конструктрое класса явно вызывать конструктор _properties с какими-то параметрами:
Machinarium::Materials::ElementPurified_Constant::ElementPurified_Constant()
    : _properties(some, valid, parameters)
{
}
Ответ написан
Nightmare1
@Nightmare1 Автор вопроса
Программист
В структуре были ссылки на типы, изменил на указателя и код скомпилировался без проблем.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы