[英]Undefined reference to vtable in Qt
我無法檢測代碼中的任何錯誤時遇到了虛擬表錯誤。 有人可以向我指出正確的方向嗎? 很抱歉使用荷蘭語,希望這不是問題。
#ifndef LIJST_H
#define LIJST_H
#include "product.h"
#include <list>
typedef list<Product*> lijst;
#endif // LIJST_H
// Methode
#ifndef METHODE_H
#define METHODE_H
#include "lijst.h"
class Methode
{
public:
Methode() {}
virtual ~Methode() {}
virtual double run(lijst *items);
};
#endif // METHODE_H
// Productmethode
#ifndef PRODUCTMETHODE_H
#define PRODUCTMETHODE_H
#include "methode.h"
class ProductMethode : public Methode
{
private:
map<string,double> kortingsTabel;
public:
ProductMethode() {}
void addKorting(string naam, double korting);
double run(lijst *items);
};
// Main
#include <QCoreApplication>
#include "factuur.h"
#include "product.h"
#include "globalemethode.h"
#include "productmethode.h"
#include "drempelmethode.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
GlobaleMethode G ( 0.1 );
ProductMethode P;
P.addKorting ( "Melk", 0.1 );
P.addKorting ( "Boter", 0.05 );
Factuur F ( &G );
F.addProduct ( new Product ( "Melk", 0.75 ) );
F.addProduct ( new Product ( "Kaas", 5 ) );
F.addProduct ( new Product ( "Boter", 1.7 ) );
cout << F.totaal ( ) << endl;
F.setMethode ( &P );
cout << F.totaal ( );
return a.exec();
}
您剛剛在Methode
類中聲明了一個方法:
virtual double run(lijst *items);
還需要定義該方法。 僅純虛函數允許沒有定義。
同樣,通常會使用virtual
來覆蓋某些基類方法對派生類的行為,但是在您的示例中,您沒有提供針對被覆蓋的virtual
方法的定義。 你應該。 如果不需要,那么為什么要從一開始就將方法virtual
? 它不必是virtual
。
讀得好:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.