Я не совсем уверен, что я делаю здесь неправильно.У меня есть класс, который содержит постоянный указатель на другой объект класса.Однако я получаю ошибку о невозможности конвертировать const (объект класса).Что я делаю неправильно?Неправильно ли настроен мой код в том, что я пытаюсь сделать?
Сообщение об ошибке : cannot convert 'const AppProfile' to 'AppProfile*' in return
У меня изначально было это в моем заголовочном файле class AppProfile
и я изменил его на #include "appprofile.h"
, что помогло удалить другую ошибку.
Позже я вызову run()
, который выполняет run
для моего объекта AppProfile.
заголовочный файл
#ifndef APPITEM_H
#define APPITEM_H
#include <QObject>
#include <QUrl>
#include <QDir>
#include "appprofile.h"
class AppItem : public QObject
{
Q_OBJECT
public:
explicit AppItem(QObject *parent = nullptr);
explicit AppItem(const AppProfile &profile,
QObject *parent);
/// App Profile
AppProfile *profile() const;
signals:
public slots:
void run();
private:
const AppProfile m_profile;
};
#endif // APPITEM_H
файл cpp
#include "appitem.h"
#include "appprofile.h"
AppItem::AppItem(QObject *parent) :
QObject(parent)
{
}
AppItem::AppItem(const AppProfile &profile,
QObject *parent) :
QObject(parent),
m_profile(profile)
{
}
QString AppItem::name() const
{
return m_name;
}
void AppItem::run()
{
AppProfile *profile = profile();
profile->run();
}
AppProfile *AppItem::profile() const
{
return m_profile;
}
ОБНОВЛЕНИЕ: Продолжить вопрос относительно ответа на данный вопрос ...
Чтобы просто объяснить мои намерения, я анализирую файл json, который содержит данные, использованные для создания родительского объекта AppItem.Когда этот элемент создается, он принимает его объект AppProfile.Этот объект создается только один раз, во время создания AppItem.
Зная это, как бы вы предложили мне перейти к редактированию исходного кода вопросов, касающихся AppProfile.Предполагая, что достаточно информации.Я ценю вашу помощь.Вот как выглядит код, который я использовал бы для создания AppItem
AppProfile *profile = new AppProfile();
AppItem *appItem = new AppItem(profile);