【发布时间】:2017-05-30 10:58:18
【问题描述】:
我有一个名为 Obje 的超类
#ifndef OBJE_H
#define OBJE_H
#include <QString>
class Obje
{
public:
Obje();
QString name="";
int id;
int itemid=0;
void setItemid(int i);
virtual void update(){};
};
#endif // OBJE_H
我有一个名为 Npc 的子类
#ifndef NPC_H
#define NPC_H
#include "obje.h"
#include "QString"
#include "QPixmap"
class Npc : public Obje
{
public:
Npc(QString dir="left");
QString direction="left";
QPixmap* spriteSheet = nullptr;
QPixmap face;
QPixmap sprites[3];
void update(int nid);
QPixmap* getCurrentSprite();
int currentFrame;
QString frameDirection;
};
#endif // NPC_H
我还有一个类来管理 listWidgets
class ListUpdate
{
public:
ListUpdate();
static void update(QListWidget *q, vector<Obje>& i);
private:
static struct item{
QString id;
QString name;
QPixmap px;
};
static QListWidgetItem* newItem(ListUpdate::item &i, int c);
};
#endif // LISTUPDATE_H
当我尝试将类型为向量“Npc”的名为“npcs”的对象传递给 ListUpdate::update 时,会出现此错误 传递向量:
ListUpdate::update(ui->listWidget,npcs);
错误:
C:\Qt Projects\RpgEditor\npcscreen.cpp:64: error: C2665: 'ListUpdate::update': none of the 3 overloads could convert all the argument types
注意:我还有 2 个其他重载函数,我没有在这里写它们以防止不必要的混淆(这就是为什么它说,“没有 3 个重载”)
为什么它不接受我的子类?
【问题讨论】:
-
你能提供
npcs的定义吗? -
你的 npc 是 std::vector
类型的吗? -
是的,它没有显示 ,我试图通过编辑来解决这个问题
-
是的,它的类型是 std::vector
-
使用getter和setter而不是成员变量
标签: c++ qt inheritance