000
27.09.2015, 17:36 Uhr
Ken
|
Hallo,
wir wollten eine virtuelle Klass schreiben von der dann später mehrere Klassen erben sollen und die Methoden überschreiben. Leider funktioniert dies gar nicht, da die erbende Klasse angeblich abstrakt ist, obwohl wir der Meinung sind alle rein virtuellen Funktionen überschrieben zu haben.
Erstmal zum Code:
main.cpp
C++: |
#include <windows.h> #include <iostream> #include "header/calculator.h" #include "stdio.h" #include "header/Integer.h"
using namespace std;
auto main() { AllocConsole(); freopen("conin$", "r", stdin); freopen("conout$", "w", stdout); freopen("conout$", "w", stderr); printf("Debugging Window:\n");
Calculator<Integer> calc; Integer i(2); Integer g(3); calc.sum(i, g); cout << result.getInt(); }
|
arithmetic.h
C++: |
#pragma once using namespace std;
template<class V> class Arithmetic {
public: /* @returns V: sum of the values */ virtual V& sum(V& arg0) = 0; };
|
integer.h
C++: |
#pragma once #include "arithmetic.h"
using namespace std;
class Integer : public Arithmetic<Integer> {
private:
public: int value; Integer(int value); int Integer::getInt(); };
|
integer.cpp
C++: |
#include "header/Integer.h"
Integer::Integer(int value) { this->value = value; }
int Integer::getInt() { return this->value; }
//hier sind wir ganz unsicher, ob die Vererbung so correkt ist. Haben schon viel hier //ausprobiert. So findet VS wenigstens die richtige deklaration. Und es gibt keinen Fehler //bei "return result" template<class V> V& Arithmetic<V>::sum(V& arg0) { int i = this->value + arg0.getInt(); Integer result(i); return result; }
|
calculator.h
C++: |
using namespace std;
template<class V> class Calculator { public:
/* @returns V: sum of the values */ V sum(V a, V b);
};
|
calculator.cpp
C++: |
#include "header\calculator.h"
template<class V> V Calculator<V>::sum(V a, V b) { V result = a.Arithmetic<V>::sum(b); return result; }
|
Fehlermeldungen: Schweregrad Fehler Code C2259 Beschreibung "Integer": Instanz von abstrakter Klasse kann nicht erstellt werden
Wir sind leider inzwischen komplett überfragt und bräuchten dringend Hilfe. Dafür schon mal danke.
Mfg Ken |