以下問題: 我得到了一個抽象的motherclass,兩個子類和一個使用子類的函數的類。必須實現繼承的母類虛擬方法
motherclass:
Vektor.h
class Vektor {
public:
Vektor();
virtual bool range() const = 0;
virtual ~Vektor();
};
子類:
Absolutvektor.h
class Absolutvektor: public Vektor {
public:
Absolutvektor(int x, int y);
int x;
int y;
virtual ~Absolutvektor();
virtual bool range (int x, int y);
};
Einheitsvektor.h
class Einheitsvektor : public Vektor {
public:
Einheitsvektor(int x, int y, int richtung);
int x;
int y;
int richtung;
virtual ~Einheitsvektor();
virtual bool Einheitsvektor::range (int richtung);
};
「正常班」: schiff.h
#pragma once
#include <Einheitsvektor.h>
#include <Absolutvektor.h>
class Schiff {
public:
Schiff(int schiffId, int schiffLaenge, Absolutvektor absolutvektor, Einheitsvektor einheitsvektor, bool segmentestati[]);
int schiffId;
int schiffLaenge;
Absolutvektor absolutvektor;
Einheitsvektor einheitsvektor;
bool segmentestati[] = false;
// c++ vektor
};
Schiff.cpp:
#include "Schiff.h"
Schiff::Schiff(int schiffId, int schiffLaenge, Absolutvektor absolutvektor, Einheitsvektor einheitsvektor, bool segmentestati[]){
this -> schiffId = schiffId;
this -> schiffLaenge = schiffLaenge;
}
洙現在我得到以下錯誤在希夫文件:
類型'Einheitsvektor'必須實現繼承的純虛擬 我的ThOD「VEKTOR ::範圍」
錯誤出現六次,在Schiff.cpp 2倍和4倍Schiff.h
我不知道爲什麼要實現該功能爲「VEKTOR」因爲這是一個抽象類,並且我有兩個不同的函數範圍用例。
虛擬函數上的簽名需要與實現中的簽名相匹配。 – Tyler
'bool range();''和'bool range(int richtung);'不是同一個函數。您可能認爲您在'Einheitsvektor :: range'中重寫'Vektor :: range',但C++不會。如果你的意思是重寫一個函數,使用'override'關鍵字。 – nwp