?
Hi, bin grade an einem kleinem Programm zum üben, wobei es darum geht eine Klasse Bruch zu erstellen und mit Operatoren zu überladen. Da ein Bruch ja möglichst nicht durch 0 geteilt werden soll, möchte ich über eine static create Funktion den Konstruktor nur dann aufrufen, wenn der Nenner des Bruchs nicht 0 ist. Dafür wollte ich einen Vector verwenden, der mir jeweils immer eine Adresse mit der entsprechenden Instanz speichert. Diese Instanz wird dann beim initialisieren zurückgegeben. Habe jetzt das Problem, den Vector mit Pointern meiner Klasse zu füllen, leider wird man in der Online Hilfe und in Google nicht so schnell für eine Lösung fündig:
// Datei bruch.h
#ifndef BRUCH_H
#define BRUCH_H
#include <vector>
class bruch{
private:
static std::vector<bruch> *inst;
int m_nom; // nominator (zähler)
int m_denom; // denominator (nenner)
bruch(int nom, int denom);
public:
static bruch* create(int nom, int denom = 1);
};
#endif // BRUCH_H
// ------------------------------------------------------
// Datei bruch.cpp
#include "bruch.h"
bruch::bruch(int nom, int denom)
{
m_nom = nom;
m_denom = denom;
}
bruch* bruch::create(int nom, int denom)
{
if(denom = 0)
return false;
bruch* temp_inst = new bruch(nom,denom);
bruch::inst->push_back(temp_inst); // Fehler
return 0; // Hier wird später die Instanz temp_inst* zurückgegeben,
// derzeit nur temporär 0
}
Fehlermeldung:
Fehler 1 error C2664: 'std::vector<_Ty>::push_back': Konvertierung des Parameters 1 von 'bruch *' in 'const bruch &' nicht möglich e:\studium\oop\cpp\cpp_projekt\aufgaben 5\5_3\bruch.cpp 19
Falls mir jemand helfen könnte wäre das super!