Airwen_Labrador 2021-07-27 10:44 采纳率: 0%
浏览 83

invalid new-expression of abstract class type 'listmode' myplaylistmode = new listmode(this);


#ifndef PLAY_SYSTEM_H
#define PLAY_SYSTEM_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>

QT_BEGIN_NAMESPACE
class   Qlabel;
class   QMediaPlayer;
class   QMediaPlaylist;
class   QVideoWidget;
class   QPushbutton;
class   QSlider;

QT_END_NAMESPACE

class   ListMode;
class   VideoMode;

class play_system : public QMainWindow{
    Q_OBJECT

public:
    play_system(QWidget *parent = nullptr);
    ~play_system();

signals:

private slots:

    QMediaPlayer *myplayer = nullptr;//播放器
    QMediaPlaylist *myplaylist = nullptr;//播放列表
    QVideoWidget *myvideoWidget = nullptr;//播放窗口

    _ListMode *myplaylistmode = nullptr;****_

};
#endif // PLAY_SYSTEM_H

用listmode创建myplaylistmode


#include "play_system.h"

#include "./sub_systems/controlmode.h"
#include "./sub_systems/listmode.h"
#include "./sub_systems/videomode.h"

#include <QMediaService>
#include <QMediaPlaylist>
#include <QMediaMetaData>
#include <QtWidgets>

play_system::play_system(QWidget *parent)
    : QMainWindow(parent)
{
    myplayer = new QMediaPlayer(this);
    myplayer->setAudioRole(QAudio::VideoRole);
    myplaylist = new QMediaPlaylist();
    myplayer->setPlaylist(myplaylist);

    myvideoWidget = new videomode(this);
    myplayer->setVideoOutput(myvideoWidget);//设置视频输出

    _myplaylistmode = new listmode(this);****_
}

用 new 结果报错 invalid new-expression of abstract class type 'listmode' myplaylistmode = new listmode(this);

以下是listmode的内容

#ifndef LISTMODE_H
#define LISTMODE_H

#include <QAbstractItemModel>
#include <QScopedPointer>

QT_BEGIN_NAMESPACE
class QMediaPlaylist;
QT_END_NAMESPACE

class listmode : public QAbstractItemModel
{
    Q_OBJECT

public:

    enum Column
    {
        Title = 0,
        ColumnCount
    };

    explicit listmode(QObject *parent = nullptr);
    ~listmode();

    QMediaPlaylist *playlist;

private:
    QScopedPointer<QMediaPlaylist> myplaylist;
    QMap<QModelIndex,QVariant> mydata;
};

#endif // LISTMODE_H

listmode.h文件

#include "listmode.h"

#include <QFileInfo>
#include <QUrl>
#include <QMediaPlaylist>

listmode::listmode(QObject *parent)
    : QAbstractItemModel(parent)
{
}

listmode::~listmode()
{
}

.cpp文件

查资料视乎是该基类中的函数存在纯虚函数的问题,但我不知道如何修改

  • 写回答

1条回答 默认 最新

  • 小小邦子 2021-07-27 14:36
    关注

    listmode 的构造函数为explicit,禁止了参数的隐式转换,所以new 处的this指针没法隐式转换成QObject*。解决:不用explicit或传参数时使用dynamic_cast<QObject*>(this)

    评论

报告相同问题?

问题事件

  • 创建了问题 7月27日

悬赏问题

  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染