C++ Fehler: denn die folgenden virtuellen Funktionen sind rein innerhalb

Ich habe Probleme bei der Zuweisung ein Objekt in meiner Klasse. Es fühlt sich an wie mache ich es richtig, aber es nicht lassen Sie mich laufen. Ich habe es nachgeschlagen, aber ich kann nicht herausfinden, was ich falsch mache oder anders als alle anderen. Habe ich auskommentiert, eine Reihe von Sachen, und doch ist es immer noch nicht laufen

Gewehr.h

#ifndef rifle_H
#define rifle_H

#include <QPainter>
#include <QGraphicsItem>
#include <QGraphicsScene>

#include <QTimer>
#include <QDialog>

class rifle : public QGraphicsItem
{
public:
    rifle();//(qreal dirx, qreal diry);
    //virtual ~rifle();
    void move();
protected:

private:
    //QPixmap shot;
    qreal m_Speed;
    qreal m_DirX;
    qreal m_DirY;
};

#endif //rifle_H

rifle.cpp

#include "rifle.h"

rifle::rifle() //qreal dirx, qreal diry
//   : m_Speed(5.0)
//   , m_DirX(dirx)
//   , m_DirY(diry)
{
    //shot.load(":/pic/rifle.png");
}

rifle::~rifle()
{

}


void rifle::move()
{
    setPos(x()+m_Speed*m_DirX, y()+m_Speed*m_DirY);
}

und hier ist, wo ich dabei bin den code

void Dialog::fire()
{
    qreal dirx = ui->graphicsView->m_FireTarget.x()-200.0;
    qreal diry = ui->graphicsView->m_FireTarget.y()-200.0;

    qreal length = sqrt(dirx*dirx+diry*diry);
    if (length!=0)
    {
        //normalized direction vector
        qreal invLength= 1.0/length;
        dirx *= invLength;
        diry *= invLength;

        //creating an angle perturbation of +/- 3°
        qreal alphaPerturbation = static_cast<qreal>(qrand()%6-3) * M_PI / 180.0;
        qreal xPerturbation = cos(alphaPerturbation);
        qreal yPerturbation = sin(alphaPerturbation);
        //cos(a+b)=...
        dirx = dirx*xPerturbation - diry*yPerturbation;
        //sin(a+b)=...
        diry = diry*xPerturbation + dirx*yPerturbation;

        /*rifle**/ circle = new rifle(dirx, diry);
        scene->addItem(circle);
    }
}
  • Auch dem compiler gesagt, Sie die rein virtuellen Funktionen fehlen. Diese umzusetzen. So einfach ist das.
  • Es heißt nicht jeder rein virtuelle Funktionen
  • Du bist verwirrt. Wenn eine Fehlermeldung sagt, dass "...die folgenden virtuellen Funktionen sind..." gefolgt von einer Liste von virtuellen Funktionen.
InformationsquelleAutor thatboytitz | 2014-05-08
Schreibe einen Kommentar